在我的 docker-compose 文件中,需要多个容器来知道特定容器的主机名,包括这个特定容器。
链接将不起作用,因为容器无法链接到自身。
基本上,我正在寻找的是一种在 docker-compose 中为 localhost 起别名的方法。
原文由 galusben 发布,翻译遵循 CC BY-SA 4.0 许可协议
在我的 docker-compose 文件中,需要多个容器来知道特定容器的主机名,包括这个特定容器。
链接将不起作用,因为容器无法链接到自身。
基本上,我正在寻找的是一种在 docker-compose 中为 localhost 起别名的方法。
原文由 galusben 发布,翻译遵循 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 许可协议
5 回答7.7k 阅读✓ 已解决
3 回答8.5k 阅读
2 回答4.1k 阅读✓ 已解决
2 回答3k 阅读✓ 已解决
1 回答2.5k 阅读✓ 已解决
3 回答3k 阅读
1 回答1.7k 阅读✓ 已解决
您应该避免使用链接。相反,同一 Docker 网络上的服务可以通过使用服务名称作为 DNS 名称来找到彼此。使用它来引用您描述的特定容器,包括它引用自身的时间。
例如,在以下组成的 Docker Compose 文件中,如果
someservice
是在端口 80 上服务的 Web 服务器,则anotherservice
服务将能够通过http://someservice/
连接到它---
,因为它们在一个公共网络上the_net
。someservice
也可以在http://someservice/
到达自身。