从docker compose中的网络别名中删除服务名称

时间:2020-09-30 10:02:17

标签: docker docker-compose

docker-compose1.yml

services:
  app1:
    (...)
    networks:
      - my_network

  db:
    (...)
    networks:
      - my_network

networks:
  my_network:
    name: my_network

还有docker-compose2.yml

services:
  app2:
    (...)
    networks:
      - my_network

  db:
    container_name: "db2"
    (...)
    networks:
      my_network:
        aliases:
          - replace_db_alias_please
networks:
  my_network:
    external: True
$ docker inspect db2
(...)
"Networks": {
  "my_network": {
    "Aliases": [
      "8c2da47d1e8e",
      "db",
      "replace_db_alias_please"
     ],
  }
}

故事是我需要将此服务放在相同的网络中,并且网络名称 db 含糊。如何从 不更改服务名称的情况下从一项服务中删除该别名?

1 个答案:

答案 0 :(得分:1)

我非常确定无法删除默认别名。根据您的特定用例,您可以尝试以下操作之一:

  1. 为两种db服务都添加别名,并且完全不使用默认别名,以免产生歧义。
  2. 如果db实例只能由相应的应用程序访问,则可以创建内部网络:

docker-compose1.yml

version: "3.5"

services:

  app1:
    networks:
      - my_network
      - internal

  db:
    networks:
      - internal

networks:
  my_network:
    name: my_network
  internal:
    internal: true

docker-compose2.yml

version: "3.5"

services:

  app2:
    networks:
      - my_network
      - internal

  db:
    networks:
      - internal

networks:
  my_network:
    external: true
  internal:
    internal: true