我看到有人定义了这样的卷(我仅在下面放置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/

10-16 06:25