我创建了一个docker swarm并尝试使用覆盖网络,以便在该群集上部署的2个服务之间进行通信。 Docker组成的1个服务看起来像:
version: '3'
services:
web:
container_name: "eureka"
image: eureka
environment:
EUREKA_HOST: eureka
ports:
- 8070:8070
networks:
- net_swarm
networks:
net_swarm:
external:
name: net_swarm
第二:
version: '3'
services:
web:
image: zuul-service
environment:
EUREKA_HOST: eureka_web
ports:
- 8069:8069
networks:
- net_swarm
networks:
net_swarm:
external:
name: net_swarm
我做了一个docker deploy --compose-file docker-compose.yml eureka
来创建服务1,服务名称为eureka_web,如上所示,在服务2的compose文件中引用为EUREKA_HOSTS,但是因为这个“eureka_web”有在尝试运行第二个文件时主机未被选中的下划线。(主要是下划线的becoz)
我可以以某种方式覆盖服务名称中的下划线,还是有任何其他解决方法?
答案 0 :(得分:2)
不要给出容器名称。
这样您的服务名称就会充当主机名。
带下划线的主机名也不应该导致任何问题。尝试找出实际的根源。
编辑: 您的服务名称和主机名是web。如果不查看docker文件,我就不能说这行了。
environment:
EUREKA_HOST: eureka