我有一个 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
我最初使用
启动了service1docker-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”已被容器使用
为什么会发生这种情况?有什么方法可以避免这种行为?
根据https://github.com/docker/compose/issues/1397,您可以使用 --no-deps 选项来避免重新创建其他依赖服务。例如: docker-compose up -d --no-deps service1