首页 > 解决方案 > 如何在同一个 docker-compose 项目中优先考虑具有相同名称的容器?

问题描述

我有以下设置:

/project_a
   docker-compose.yml

project_a/docker-compose.yml

version: "3.7"

services:
  server:
    ...
    networks:
      - default
      - web

  db:
    ..
    networks:
      - default

容器连接了server两个网络:default为了与db容器通信(不暴露在项目之外)和web网络以与 Traefik 通信。

server容器可以通过它的主机名访问容器dbdb.

如果有人在同一台服务器上创建另一个项目:

completely_different_path/project_b/docker-compose.yml

version: "3.7"

services:
  db:
    ..
    networks:
      - web

...然后我的来自project_aserver的容器突然解析为来自project_b的另一个容器的 IP 地址,这破坏了功能。db

我发现这非常脆弱,因为通过添加配置错误的新项目很容易破坏现有项目。

有没有优雅的方法来防止它?我想避免container_namedb容器进行硬编码,因为我发现这是一种非常糟糕的做法:

标签: dockerdocker-compose

解决方案


推荐阅读