我想删除docker-compose.yml文件中定义的容器,当我们用另一个文件docker-compose.prod.yml运行时,以示例:
# docker-compose.yml
version: 2
services:
www:
image: php56
db_for_development:
image: mariadb
覆盖:
# docker-compose.prod.yml
version: 2
services:
www:
image: php70
db_for_development:
[control: override-and-remove] # hypothesis
然后,运行时:
docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d
docker-compose -f docker-compose.yml -f docker-compose.prod.yml ps
实际上,我有www
和db_for_development
。
我只需要www
容器,而不是其他容器。
您可能必须切换到版本:3才能执行此操作,我相信版本:2您可以使用"比例"参数,但我不是100%确定的。
无论如何,您可以覆盖"副本"。像这样的参数:
# docker-compose.prod.yml
version: "3"
services:
db_for_development:
deploy:
replicas: 0
您正在向后
docker -compose.yml->指定将始终运行的所有服务
docker -compose.override.yml->自动拾取,通常用于开发
docker -compose。*。yml->特殊情况
因此,在您的情况下:
您没有删除docker-compose.yml中定义的容器。
docker-compose.yml - >这是基础
version: 2
services:
www:
image: php56
docker-compose.override.yml->这是dev
version: 2
services:
db_for_development:
image: mariadb
docker-compose.production.yml->这是产品
version: 2
services:
www:
environment:
- APP_ENV=production
env_file:
- /home/ubuntu/production-app
docker-compose.admin.yml->这是针对DBA
version: 2
services:
adminer:
image: adminer
restart: always
ports:
- 8080:8080
指令:
用于开发,docker-compose.yml和docker-compose.override.yml将仅通过运行
来使用$ docker-compose up
生产,手动指定两个文件
$ docker-compose -f docker-compose.yml -f docker-compose.production.yml up --remove-orphans
如果您想带上管理员(不建议进行生产,但有时需要)
$ docker-compose -f docker-compose.yml -f docker-compose.production.yml -f docker-compose.admin.yml up
最后,当您完成管理员时,只需再次运行"生产命令",这将使管理员以孤儿的身份运行,而您不想要它。这就是为什么旗帜 - 示例 - 孔子适用于
假设您要删除(禁用)撰写文件中定义的服务
docker-compose.yml
的内容
version: "3.4"
services:
app:
restart: always
image: "rasa/rasa-x-demo:${RASA_X_DEMO_VERSION}"
expose:
- "5055"
depends_on:
- rasa-production
docker-compose.override.yml
version: "3.4"
services:
app:
image: alpine:latest
command: "true"
entrypoint: "true"
完成。现在您的容器仍将启动,但使用空图像
这是不可能的。您唯一真正的选择是在运行docker-compose up
时(有选择地)指定服务。
通过使用docker中添加的配置文件构成版本'3.9'
,可以解决另一个解决方法这个想法是,在您的docker-compose.prod.yml
中,设置一个虚拟配置文件以供服务删除,并在不指定该配置文件的情况下调用docker compose up
。因此,在您的情况下:
# docker-compose.prod.yml
version: '3.9' # make sure the version is at least 3.9
services:
db_for_development:
profiles:
- dummy-profile
运行docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d
根本不会提出db_for_development
。
在官方文档中可以找到更多有关个人资料工作的示例