两个docker服务依赖于同一个服务

两个docker服务依赖于同一个服务,docker,docker-compose,docker-swarm,orchestration,Docker,Docker Compose,Docker Swarm,Orchestration,我有两个docker撰写文件 /cfacing/docker-compose.yml app-customer-facing: build: . depends_on: - mysql-db mysql-db: container_name: staging-mysql-db image: mysql:5.6 app-admin-facing: build: . depends_on: - mysql-db

我有两个docker撰写文件

/cfacing/docker-compose.yml

  app-customer-facing:
    build: .
    depends_on:
      - mysql-db

  mysql-db:
    container_name: staging-mysql-db
    image: mysql:5.6
  app-admin-facing:
    build: .
    depends_on:
      - mysql-db

  mysql-db:
    container_name: staging-mysql-db
    image: mysql:5.6
/afacing/docker-compose.yml

  app-customer-facing:
    build: .
    depends_on:
      - mysql-db

  mysql-db:
    container_name: staging-mysql-db
    image: mysql:5.6
  app-admin-facing:
    build: .
    depends_on:
      - mysql-db

  mysql-db:
    container_name: staging-mysql-db
    image: mysql:5.6
我希望面向客户的容器和面向管理员的容器都依赖于同一个mysql db容器。这目前不起作用,面向客户的应用程序将以mysql db启动,但面向管理员的应用程序不会启动:

错误:for mysql db无法为服务mysql db创建容器:冲突。容器“FE63E1AB0C1FD19236551BFC5930544CB31E649A4C18421C0595959DC1274EB600”已在使用容器名“/staging mysql db”。您必须删除(或重命名)该容器才能重用该名称。

错误在于您正在复制您的mysql db服务,而不是重复使用它。这就是为什么您会得到一个错误,告诉您已经有一个名为staging mysql db的容器

要解决您的用例,您必须扩展docker compose文件。

你可以看到一个例子。请参阅block管理任务,这基本上就是您要做的。

这不仅仅是命名问题,docker compose文件还试图解决一些网络问题。通过覆盖一个compose文件,所有容器都将位于同一网络上。你不会有任何网络问题。这些是不同的git回购。。。此外,docker处于swarm模式“docker处于swarm模式”是什么意思?你正在部署一个swarm堆栈吗?如果是这种情况,swarm将忽略Dependes_on选项。见