This repo is updated on dockerhub and you can have it without building it, by simply running the below command.
docker pull mycroftai/docker-mycroft
Git pull this repository.
git clone https://github.com/MycroftAI/docker-mycroft.git
Build the docker image in the directory that you have checked out.
docker build -t mycroft .
You can build a different version of the code by passing a build arg for the git branch or tag to checkout.
docker build -t mycroft --build-arg MYCROFT_VERSION=dev .
# or for a particular release
docker build -t mycroft --build-arg MYCROFT_VERSION=release/v19.2.2
To get persistent data and don't have, for example, to pair our instance every time the container is started. You can map a local directory into the container. Just replace the directory_on_local_machine with where you want the container mapped on your local machine (eg: /home/user/mycroft).
Sounds can be played in the container using pulseaudio, without modifying any config files (Thanks to fsmunoz).
- Set PULSE_SERVER env variable
- Share pulseaudio's cookie
Run the following to start up mycroft:
docker run -d \
-v directory_on_local_machine:/root/.mycroft \
--device /dev/snd \
-e PULSE_SERVER=unix:${XDG_RUNTIME_DIR}/pulse/native \
-v ${XDG_RUNTIME_DIR}/pulse/native:${XDG_RUNTIME_DIR}/pulse/native \
-v ~/.config/pulse/cookie:/root/.config/pulse/cookie \
-p 8181:8181 \
--name mycroft mycroftai/docker-mycroft
Confirm via docker ps that your container is up and serving port 8181:
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
692219e23bf2 mycroft "/mycroft/ai/mycro..." 3 seconds ago Up 1 second 0.0.0.0:8181->8181/tcp mycroft
You should now have a running instance of mycroft that you can interact with via the cli, etc.
At any time you can watch the logs simply by running the bellow command:
docker logs -f mycroft
You can exit out of this docker log command by hitting ctrl + c, the --follow
basically turns it into a real tail instead of a cat of the log.
You can interact with the CLI of the container by running the following command, this will connect you to the running container via bash:
source /opt/mycroft/.venv/bin/activate
docker exec -it mycroft /bin/bash
Once in the container you can do ./start-mycroft.sh cli
to get a interactive CLI to interact with mycroft if needed.
You can hit ctrl + c to exit the cli.
After the container has been started you can watch the logs and look for the line that says Pairing Code and use this to pair at https://home.mycroft.ai.
You can watch the logs and confirm it installs/deletes skills.
You can install skills into the container from outside by running the following:
docker exec -it mycroft /usr/local/bin/msm install github_url
So to install say my basic-skill helper:
docker exec -it mycroft /opt/mycroft/msm/msm install https://github.com/btotharye/mycroft-skill-basichelp
You can uninstall a skill by removing the folder location for it
docker exec -it mycroft rm -rf /opt/mycroft/skills/mycroft-skill-basichelp
This would remove the above test basic help skill.