我看到有人定义了这样的卷(我仅在下面放置Dockefile的一部分以清楚地说明我的问题):
WORKDIR /usr/src/app
COPY . .
VOLUME . /usr/src/app
因此,在VOLUME行中,
.
表示当前目录,即上面定义的WORKDIR
。然后,VOLUME的第二部分是/usr/src/app
。这是惯例吗?对我来说,这听起来像是一条定义为音量的相同路径。我会误会吗?另一个问题是定义音量
/usr/src/app
有什么好处?在项目中进行更改时是否可以将其反射(reflect)在同一图像的所有容器中(是因为COPY . .
将项目文件夹复制到了容器中)? 最佳答案
这似乎是一种冗余-在Dockerfiles中,VOLUME
只是一个声明,用于将文件从镜像复制到该位置安装的卷。它为cannot specify the directory in the host,只能在运行时完成。VOLUME
can take multiple arguments,并在所有通过的位置声明卷-因此,如果您多次指定同一目录,则尽管列出了两个等效路径,但它实际上没有任何作用。
如果在该行之后或从该行生成的后续镜像中更改了WORKDIR,则可能会有所不同,因为只有在运行容器时才解析相对路径。
关于docker - 我在实践中对Docker卷使用的困惑,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/62412016/