如何仅在开发环境中使用 docker-compose 附加卷?
How can I attach volumes with docker-compose only when in the development environment?
在 docker-compose 文档的 quickstart: Compose and Django 页面中,Dockerfile
和 docker-compose.yml
文件都将 .
添加为 /code
,像这样:
ADD . /code/
几行之后:
web:
build: .
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
我猜这样做是为了在开发过程中,您不必经常重建映像,而在使用 docker build
时,映像是使用内部已有的源代码构建的,因此在生产中,您可以简单地执行 docker run
来启动容器。对吗?
如果是这样,问题是,我如何创建一个 docker-compose.yml
来根据我创建的是生产堆栈还是开发堆栈来附加卷或不附加卷?
发布此问题几分钟后,我看到了一个页面,其中包含一些关于如何执行此操作的提示。这是我认为必须完成的方式:
- 您定义一个附加卷的
docker-compose.yml
。但是,在您的 Dockerfile
中,您仍然保留原始的 ADD
或 COPY
指令。
您还定义了一个 production.yml
文件,其中不包含您的开发系统和生产系统之间的相似之处。但是,它确实包括您要在生产环境中进行的更改。例如,volumes
部分可能是这样的:
volumes: {}
现在,当您 运行 docker-compose
在生产中时,您可以这样做:
$ docker-compose -f docker-compose.yml -f production.yml up
这里是link到Using Compose in Production供参考。
在 docker-compose 文档的 quickstart: Compose and Django 页面中,Dockerfile
和 docker-compose.yml
文件都将 .
添加为 /code
,像这样:
ADD . /code/
几行之后:
web:
build: .
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
我猜这样做是为了在开发过程中,您不必经常重建映像,而在使用 docker build
时,映像是使用内部已有的源代码构建的,因此在生产中,您可以简单地执行 docker run
来启动容器。对吗?
如果是这样,问题是,我如何创建一个 docker-compose.yml
来根据我创建的是生产堆栈还是开发堆栈来附加卷或不附加卷?
发布此问题几分钟后,我看到了一个页面,其中包含一些关于如何执行此操作的提示。这是我认为必须完成的方式:
- 您定义一个附加卷的
docker-compose.yml
。但是,在您的Dockerfile
中,您仍然保留原始的ADD
或COPY
指令。 您还定义了一个
production.yml
文件,其中不包含您的开发系统和生产系统之间的相似之处。但是,它确实包括您要在生产环境中进行的更改。例如,volumes
部分可能是这样的:volumes: {}
现在,当您 运行 docker-compose
在生产中时,您可以这样做:
$ docker-compose -f docker-compose.yml -f production.yml up
这里是link到Using Compose in Production供参考。