使用
docker-compose
我正在尝试挂载包含多个目录的工作目录,其中一些是符号链接。
例如,我想挂载包含目录
A
、B
和 C
的工作目录。但是,目录 C
是指向 C:\Users\MyUser\C
的符号链接
因此,我会像这样挂载我的目录:
volumes:
- ../C:/mnt/host/c/Users/MyUser/C/ # Mounting to the symbolic link location
- ./:/usr/src/app # My working directory
这个效果很好。然而,问题是
c/Users/MyUser
取决于执行命令的用户。因此,用户必须进入并将文件更新为类似 c/Users/SomeOtherUser
的内容才能使其仍然有效。换句话说,我将其安装到的目录取决于用户。
如何将其与用户解耦?可以假设目录
C
位于用户的 Home
目录中,并且比当前目录高一级。我想做的是这样的:
volumes:
- ../C:/mnt/host/${PWD}/../C/
但是,这不起作用,因为它不是有效的语法。如何将卷安装到符号链接的位置?
我解决此类问题的唯一方法是使用相对符号链接而不是绝对符号链接,或者依靠 Mutagen 在安装到容器中时显式配置符号链接行为。
虽然不清楚为什么要求容器中挂载的路径需要包含仅存在于主机上的用户名,尽管容器本身并不存在。
这会导致资源丢失。
我猜这是因为您的系统中已经存在以前的符号链接。
您对主机系统上的符号链接有影响吗?
C
坐骑的本质是什么?它提供缓存目录吗?一些静态文件?依赖源代码?C:\Users\MyUser\C
目录移动到本地主机上更不可知的路径中吗? (例如 /home/shared/
并要求谁运行 Docker 必须在本地主机上拥有此共享目录?(无论本地主机用户名如何,至少它是相同的名称;少一个要求)
C
文件夹提供了什么。如果它是一个依赖项,那么更有意义的是:
对于依赖管理,最后一个选项可能是最需要考虑的选项。