如何在Docker中将VOLUME更改为COPY?

我的工作stream程由三个阶段组成:

  1. 发展
  2. 分期
  3. 生产

所有三个平台上的dockerconfiguration几乎是一样的,除了1个区别。 在开发中,我通过VOLUME挂载项目目录,而不是通过COPY

现在我想知道什么是更好的做法?

像这样为每个阶段创build一个Dockerfile

 project/ .docker development apache-php Dockerfile vhosts.conf mariadb Dockerfile staging apache-php Dockerfile vhosts.conf mariadb Dockerfile etc. 

或者以某种方式有条件地将VOLUME更改为COPY ,但我不知道这应该如何工作。

使用inheritance

创build一个不包含COPY / VOLUME步骤的基础映像,然后根据基本映像制作开发,testing和生产Docker文件。

基础Dockerfile

 FROM ubuntu:14.04 RUN echo test >> /important.txt 

然后构build基础镜像,以便可以由其他Dockerfiles引用: docker build -t baseimage .

开发Dockerfile

 FROM myrepo:baseimage VOLUME someVolume 

build立并运行。

Prod Dockerfile

 FROM myrepo:baseimage COPY src dest 

build立并运行。

有趣

如果使用的话,卷将覆盖conatiner文件:

 docke run -it -v ~/some.txt:/some/container/folder