smartgic / docker-mycroft

Mycroft AI Voice Assistant Docker images and docker-compose.yml files for x86_64, arm7vl and aarch64 CPU architectures.
https://hub.docker.com/u/smartgic
Apache License 2.0
41 stars 8 forks source link

Duplicate mounts for skills #7

Closed geerzo closed 3 years ago

geerzo commented 3 years ago

Running the docker compose file doesn't work right now because there is a duplicate mount error.

- ~/mycroft-config:/home/mycroft/.config/mycroft
- mycroft_skills_config:/home/mycroft/.config/mycroft

Both the local config file and the Mycroft_skills_config volume try and mount to the same location in the container.

goldyfruit commented 3 years ago

Hey @geerzo

This should not be an issue, I tested the docker-compose file without any trouble.

mycroft@mycroft_skills:~/.config/mycroft$ ls -l
total 20
drwxr-xr-x  2 mycroft mycroft 4096 Aug 10 21:07 identity
-rw-r--r--  1 mycroft mycroft  474 Aug 11 19:22 mycroft.conf
-rw-r--r--  1 mycroft mycroft  146 Aug 13 02:39 mycroft_cli.conf
-rw-r--r--  1 mycroft mycroft    2 Aug 11 20:03 schedule.json
drwxr-xr-x 62 mycroft mycroft 4096 Aug 10 21:33 skills
geerzo commented 3 years ago

When I run the docker-compose I get this error immediately: ERROR: Duplicate mount points:

Was the intent to use the skills volume to store the skills folder inside config? Should it be mounted to that skills sub directory?

goldyfruit commented 3 years ago

This is the default behavior according to the Mycroft default configuration: https://github.com/forslund/mycroft-core/blob/dev/mycroft/configuration/mycroft.conf#L110

I'm not able to reproduce your issue, I just wiped everything and redeployed using the latest commit and everything went well. Did you create the mycroft-config and mycroft-web-cache directories?

Here are some version information about my setup:

$ docker system info
Client:
 Context:    default
 Debug Mode: false
 Plugins:
  app: Docker App (Docker Inc., v0.9.1-beta3)
  buildx: Build with BuildKit (Docker Inc., v0.6.1-docker)

Server:
 Containers: 1
  Running: 1
  Paused: 0
  Stopped: 0
 Images: 7
 Server Version: 20.10.8
 Storage Driver: overlay2
  Backing Filesystem: extfs
  Supports d_type: true
  Native Overlay Diff: true
  userxattr: false
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 Cgroup Version: 1
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: inactive
 Runtimes: io.containerd.runtime.v1.linux runc io.containerd.runc.v2
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: e25210fe30a0a703442421b0f60afac609f950a3
 runc version: v1.0.1-0-g4144b63
 init version: de40ad0
 Security Options:
  seccomp
   Profile: default
 Kernel Version: 5.10.52-v8+
 Operating System: Debian GNU/Linux 10 (buster)
 OSType: linux
 Architecture: aarch64
 CPUs: 4
 Total Memory: 7.63GiB
 Name: smartgic-pi4b8-13
 ID: UPNF:GVPV:AP7R:QH4S:LVMO:PCZB:3OY4:FO4O:RH6P:POQH:RQDV:UFYR
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 Username: goldyfruit
 Registry: https://index.docker.io/v1/
 Labels:
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Live Restore Enabled: false

WARNING: No memory limit support
WARNING: No swap limit support
WARNING: No kernel memory TCP limit support
WARNING: No oom kill disable support
$ pip3 freeze | grep docker
docker==5.0.0
docker-compose==1.29.2
docker-pycreds==0.4.0
dockerpty==0.4.1
$ COMPOSE_HTTP_TIMEOUT=120 XDG_RUNTIME_DIR=$XDG_RUNTIME_DIR VERSION=dev docker-compose up -d
Creating volume "mycroft_ipc" with local driver
Creating volume "mycroft_cache" with local driver
Creating volume "mycroft_skills" with local driver
Creating volume "mycroft_skills_repo" with local driver
Creating volume "mycroft_skills_config" with local driver
Creating volume "mycroft_venv" with local driver
Creating mycroft_bus ... done
Creating mycroft_cli       ... done
Creating mycroft_audio     ... done
Creating mycroft_skills    ... done
Creating mycroft_enclosure ... done
Creating mycroft_voice     ... done
geerzo commented 3 years ago

The link you posted for the default behavior points to "\~/.mycroft/skills" which currently would be on the local container file system. Was the intent to mount the volume there and not to "\~/mycroft/.config/mycroft"?

If you mount two volumes to the same directory in the container it would only write to one of them so I'm just trying to understand what the goal is. Sorry for my confusion.

goldyfruit commented 3 years ago

mycroft_skills_config should not be useful anymore. All skill settings.json files will be stored into mycroft-config local directory (as it should be).

Try to git pull and redeploy and keep me posted :)

goldyfruit commented 3 years ago

@geerzo do you still having the issue?

geerzo commented 3 years ago

I’ll be able to test again later this week when I’m back home.

goldyfruit commented 3 years ago

@geerzo I'll close the issue for now, fill free to reopen it if you still have the issue.