如何避免 docker-compose 重新创建正在运行的容器?

问题描述 投票:0回答:1

我有一个 docker compose 文件

version: "3.5"
services:
  service1:
    image: serv1image
    container_name: service1
    networks:
      - local
    depends_on:
      - service2
      - service3
  service2:
    image: serv2image
    container_name: service2
    networks:
      - local
    ports:
      - "27017:27017"
  service3:
    image: serv3image
    container_name: service3
    networks:
      - local
    ports:
      - "2000:2000"
  service4:
    image: serv4image
    container_name: service4
    networks:
      - local
    ports:
      - "8090:8090"
    depends_on:
      - service2
      - service3
networks:
  local-network:
    driver: bridge
    name: local

我最初使用

启动了service1
docker-compose -f docker-compose.yaml up --no-recreate -d service1

显然它启动了服务 1,并且还启动了服务 2 和服务 3,因为它们是它的依赖项。 现在我必须在稍后阶段启动该服务。我使用以下命令启动它。

docker-compose -f docker-compose.yaml up  --no-recreate -d service4

但不幸的是,这也尝试重新创建服务 2 和 service3,因为它们是其依赖项,无论是否提及 --no-recreate 标志,我也得到了冲突错误说明

无法为服务service4创建容器:冲突。容器名称“service2”已被容器使用

为什么会发生这种情况?有什么方法可以避免这种行为?

linux docker docker-compose containers docker-machine
1个回答
0
投票

根据https://github.com/docker/compose/issues/1397,您可以使用 --no-deps 选项来避免重新创建其他依赖服务。例如: docker-compose up -d --no-deps service1

© www.soinside.com 2019 - 2024. All rights reserved.