【问题标题】:Two docker services depends_on the same service两个 docker 服务依赖于同一个服务
【发布时间】:2019-10-19 18:07:59
【问题描述】:

我有两个 docker-compose 文件

/cfacing/docker-compose.yml

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

  mysql-db:
    container_name: staging-mysql-db
    image: mysql:5.6

/afacing/docker-compose.yml

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

  mysql-db:
    container_name: staging-mysql-db
    image: mysql:5.6

我希望面向客户的容器和面向管理员的容器都依赖于同一个 mysql-db 容器。这目前不起作用,app-customer-facing 将以 mysql-db 开头,但 app-admin-facing 不会开始抛出:

ERROR: for mysql-db Cannot create container for service mysql-db: Conflict. The container name "/staging-mysql-db" is already in use by container "fe63e1ab0c1fd19236551bfc5930544cb31e649a4c18421c05959dc1274eb600". You have to remove (or rename) that container to be able to reuse that name.

【问题讨论】:

    标签: docker docker-compose docker-swarm orchestration


    【解决方案1】:

    错误是你在复制你的 mysql-db 服务,你没有重复使用它。这就是为什么您会收到错误消息,告诉您已经有一个名为 staging-mysql-db 的容器。

    要解决您的用例,您必须扩展您的 docker-compose 文件。
    你可以看到一个例子here。请参阅块 管理任务,这基本上就是您要执行的操作。

    【讨论】:

    • 这不仅仅是命名问题,还有 docker-compose 文件试图解决的网络问题
    • 通过覆盖一个 compose 文件,所有容器都将在同一个网络上。您不会有任何网络问题。
    • 这些是不同的 git repos... 而且 docker 处于 swarm 模式
    • “码头工人处于集群模式”是什么意思?你在部署一个 swarm stack 吗?如果是这种情况,则 swarm 会忽略 depends_on 选项。见reference documentation
    猜你喜欢
    • 2019-03-18
    • 2017-10-31
    • 1970-01-01
    • 1970-01-01
    • 2020-07-09
    • 2021-08-15
    • 2020-09-04
    • 2014-09-04
    • 2020-01-27
    相关资源
    最近更新 更多