我有一个这样的
docker-compose.yml
:
version: '2'
services:
backend:
build:
context: .
volumes:
- .:/home/ll/stuff
ports:
- '8000:80'
这总是会增加数量,这对开发有好处,但对生产不利。有没有办法“告诉”
docker-compose
仅在开发过程中安装该卷,或者换句话说,如果APP_ENV
为空或==development
?
我需要为此创建另一个撰写文件吗?如果是这样,我可以使用生产文件中的配置,而不重复不改变的内容吗?
来自官方文档:修改您的撰写文件以进行生产
考虑定义一个额外的 Compose 文件,例如 production.yml,它指定适合生产的配置。此配置文件只需包含您想要对原始 Compose 文件进行的更改。附加的 Compose 文件可以应用于原始的 docker-compose.yml 以创建新的配置。
获得第二个配置文件后,告诉 Compose 通过 -f 选项使用它:
docker-compose -f docker-compose.yml -f production.yml up -d
它应该可以解决问题!
创建一个通用基础文件,用于生产和开发:
docker-compose.yml
创建另一个用于开发的文件、
docker-compose.development.yml
,用于扩展或合并基础文件。
创建第三个用于生产的文件,
docker-compose.production.yml
,用于扩展或合并基本文件。
在生产中合并这两个文件:
docker compose -f docker-compose.yml -f docker-compose.production.yml up -d
在开发中合并这两个文件:
docker compose -f docker-compose.yml -f docker-compose.development.yml up -d
这样,开发设置最终投入生产的风险就会小得多,反之亦然。
很棒的合并示例在这里:
https://docs.docker.com/compose/multiple-compose-files/merge/#example
除了扩展和合并之外,还有第三种选择,include:
https://docs.docker.com/compose/multiple-compose-files/include/