如何在Docker中将VOLUME更改为COPY?
我的工作stream程由三个阶段组成:
- 发展
- 分期
- 生产
所有三个平台上的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