在 docker-compose 中如何创建到 localhost 的别名/链接?

新手上路,请多包涵

在我的 docker-compose 文件中,需要多个容器来知道特定容器的主机名,包括这个特定容器。

链接将不起作用,因为容器无法链接到自身。

基本上,我正在寻找的是一种在 docker-compose 中为 localhost 起别名的方法。

原文由 galusben 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.6k
2 个回答

您应该避免使用链接。相反,同一 Docker 网络上的服务可以通过使用服务名称作为 DNS 名称来找到彼此。使用它来引用您描述的特定容器,包括它引用自身的时间。

例如,在以下组成的 Docker Compose 文件中,如果 someservice 是在端口 80 上服务的 Web 服务器,则 anotherservice 服务将能够通过 http://someservice/ 连接到它 --- ,因为它们在一个公共网络上 the_net

 version: '3'

services:
  someservice:
    image: someserviceimage
    networks:
      - the_net

  anotherservice:
    image: anotherserviceimage
    networks:
      - the_net

networks:
  the_net:

someservice 也可以在 http://someservice/ 到达自身。

原文由 King Chung Huang 发布,翻译遵循 CC BY-SA 4.0 许可协议

我认为正确的答案来自

别名可以定义为服务网络声明的一部分。有关详细信息,请参阅 Compose 文件参考中的别名。 – King Chung Huang 2017 年 4 月 24 日 15:18

这是文档中的示例

version: '2'

services:
  web:
    build: ./web
    networks:
      - new

worker:
  build: ./worker
  networks:
    - legacy

db:
  image: mysql
  networks:
    new:
      aliases:
        - database
    legacy:
      aliases:
        - mysql

networks:
  new:
  legacy:

您可以在此 docker-compose 中访问 db ,也可以使用 mysql 连接此 db

原文由 penny chan 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏