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

时间:2016-02-08 14:43:34

标签: docker dockerfile docker-compose

我的工作流程包括三个阶段:

  1. 发展
  2. 分期
  3. 生产
  4. 所有三个平台上的docker配置几乎相同,只有1个不同。在开发时,我通过VOLUME挂载项目目录,而不是通过COPY复制它。

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

    为每个阶段创建一个Dockerfile,如此

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

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

1 个答案:

答案 0 :(得分:0)

使用继承

创建一个不包含actual_string = actual_string.replace(new RegExp('@' + dynamic[i] + "@", 'g'), value); / COPY步骤的基础图像,然后创建基于基本图像的开发,测试和生产Dockerfiles。

实施例

Base Dockerfile

VOLUME

然后构建基本映像,以便其他Dockerfiles可以引用它:FROM ubuntu:14.04 RUN echo test >> /important.txt

Dev Dockerfile

docker build -t baseimage .

构建并运行。

Prod Dockerfile

FROM myrepo:baseimage
VOLUME someVolume

构建并运行。

有趣的

如果像以下那样使用,卷将覆盖conatiner文件:

FROM myrepo:baseimage
COPY src dest