Docker 如何在开发环境中有条件地装载主机容器卷并在构建时添加?

Docker 如何在开发环境中有条件地装载主机容器卷并在构建时添加?,docker,Docker,假设我将代码从github签出到~/repos/shinycode $> cd ~/repos/shinycode $> ls Dockerfile www/index.html $> cat Dockerfile FROM nginx ADD www /usr/share/nginx/html 对于部署,一切正常:从github签出并运行docker build 然而,在dev环境中,我希望使用相同的Dockerfile运行容器,但也要在www目录中实时编辑文件,例如,如果

假设我将代码从github签出到
~/repos/shinycode

$> cd ~/repos/shinycode
$> ls
Dockerfile
www/index.html
$> cat Dockerfile
FROM nginx
ADD www /usr/share/nginx/html
对于部署,一切正常:从github签出并运行
docker build

然而,在dev环境中,我希望使用相同的
Dockerfile
运行容器,但也要在
www
目录中实时编辑文件,例如,如果我提供
-v www:/usr/share/nginx/html
选项来运行
docker

在这种情况下,最佳做法是什么?如果没有最后的
ADD
命令,我是否应该为dev创建一个单独的
Dockerfile
?我是不是完全错了


谢谢

您可以使用相同的Dockerfile,并将其装载到映像的/usr/share/nginx/html文件夹中的任何外部卷上。卷的装载在文件系统中优先,在该位置的映像中看不到任何内容。

太好了!这是一种常见的做法还是一种不受欢迎的做法?唯一的问题是,在dev和prod之间,将代码包含在容器中的代码和方法可能有所不同。但您正在特别寻找一种方法使它们有所不同,所以这是最不不同的方法。