在我的docker-compose文件中,需要多个容器才能知道特定容器的主机名,包括此特定容器。
链接不起作用,因为容器无法链接到自身。
基本上,我正在寻找的是一种在docker-compose中将localhost别名的方法。
答案 0 :(得分:4)
extra_hosts为我做了伎俩。
extra_hosts: - “主机名:127.0.0.1”
来自docker-compose docs:
extra_hosts添加主机名映射。使用与泊坞窗相同的值 client --add-host parameter。
extra_hosts: - “somehost:162.242.195.82” - “otherhost:50.31.209.229”将在此服务的容器内的/ etc / hosts中创建具有ip地址和主机名的条目,例如:
162.242.195.82 somehost 50.31.209.229 otherhost
答案 1 :(得分:4)
您应该避免使用链接。相反,同一个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://somservice/
找到自己。
答案 2 :(得分:1)
我认为正确答案来自
别名可以定义为服务的网络声明的一部分。有关详细信息,请参阅aliases in Compose file reference。 - King Chung Huang 4月24日和17日17:18
这是doc
中的示例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