Docker compose 通过重写删除docker compose上的服务
当我们使用另一个文件docker-compose.prod.yml在composition/override中运行时,我想删除docker-compose.yml文件中定义的容器,例如:Docker compose 通过重写删除docker compose上的服务,docker-compose,devops,devops-services,Docker Compose,Devops,Devops Services,当我们使用另一个文件docker-compose.prod.yml在composition/override中运行时,我想删除docker-compose.yml文件中定义的容器,例如: # docker-compose.yml version: 2 services: www: image: php56 db_for_development: image: mariadb 用以下命令覆盖: # docker-compose.prod.yml version: 2
# 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\u一起进行开发
我只想要www
容器,不想要其他容器。这是不可能的。您唯一的实际选择是在运行docker compose up
时(有选择地)指定服务,假设您要删除(禁用)compose文件中定义的服务
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
version: "3.4"
services:
app:
image: alpine:latest
command: "true"
entrypoint: "true"
docker compose.override.yml的内容
version: "3.4"
services:
app:
restart: always
image: "rasa/rasa-x-demo:${RASA_X_DEMO_VERSION}"
expose:
- "5055"
depends_on:
- rasa-production
version: "3.4"
services:
app:
image: alpine:latest
command: "true"
entrypoint: "true"
完成了。现在您的容器仍将启动,但它已使用空图像禁用您可能必须切换到版本3才能执行此操作,我相信在版本2上您可以使用“缩放”参数,但我不能100%确定
无论如何,您可以像这样覆盖“副本”参数:
# docker-compose.prod.yml
version: "3"
services:
db_for_development:
deploy:
replicas: 0
这仍然会通过启动alpine linux来消耗资源。这不是理想的解决方案,当然会~35MB内存。理想情况下,您的compose文件中不会有空服务。