我的docker-compose.yml
(对于 Immich 来说,如果它很重要)包含以下内容:
volumes:
- ${UPLOAD_LOCATION}:/usr/src/app/upload
- /etc/localtime:/etc/localtime:ro
- /data/NAS_Photos:/mnt/NAS_Photos:ro # <-- The one I'm having trouble with
目的(为避免疑问)是为了/data/NAS_Photos
从我的主机在容器内提供/mnt/NAS_Photos
。
当我docker-compose up -d
相关容器有一个目录/mnt/NAS_Photos
但mount | grep -i mnt
显示
none on /mnt/NAS_Photos type tmpfs (ro,relatime,inode64)
此外,该目录几乎是空的。它不包含我的 的内容。(它确实包含以前尝试调试时留下的一些文件,如果我将安装移动到容器内的其他位置,剩余的文件也会出现在那里。如果我和/data/NAS_Photos
,这些文件会保留下来。)docker compose down
docker compose up
为什么无法安装?或者,我该如何调试无法安装的原因?我没有看到任何错误消息。
使用 Ubuntu Server 22.04.3 LTS。
我检查过的内容:
/data
由我的用户拥有,并且对其具有权限,并且/data/NAS_Photos
都是 777。docker-compose.yml
我可以毫无问题地将目录挂载到相同的位置。的输出
docker inspect -f '{{ .Mounts }}' immich_microservices
为:[{bind /home/mark/Immich/library /usr/src/app/upload rw true rprivate} {bind /etc/localtime /etc/localtime ro false rprivate} {bind /data/NAS_Photos /mnt/NAS_Photos ro false rprivate}]
提前致谢!
答案1
最终发现问题出在 Snapd 上。
Docker 是以 Snap 形式安装的,Snap 对主机文件系统的访问权限有限(已讨论这里)。我的媒体位于 Snaps 无法访问的目录中,因此 Docker(作为 snap 安装)无法看到它。
我的解决方法(有点粗暴)是将媒体绑定到我的主目录中。