Docker compose 通过重写删除docker compose上的服务

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.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
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文件中不会有空服务。