在Docker中不能链接Consul和Spring Boot应用程序

我有以下configuration的Spring Boot应用程序:

spring: thymeleaf: cache: false cloud: consul: host: consul port: 8500 discovery: prefer-ip-address: true instanceId: ${spring.application.name}:${spring.application.instance_id:${random.value}} 

我想运行docker-compose(Docker 1.11.2,docker-compose 1.7.1):

 consul: image: progrium/consul:latest container_name: consul hostname: consulhost ports: - "8400:8400" - "8500:8500" - "8600:53" command: "-server -bootstrap-expect 1 -ui-dir /ui" collector-server: container_name: collector-server image: io.thesis/collector-server ports: - "9090:9090" links: - consul:consul 

不幸的是,这是行不通的,我得到:com.ecwid.consul.transport.TransportException:java.net.ConnectException:连接被拒绝。

我完全不知道为什么它不能连接到Consul,因为我可以用这种方式连接到其他系统,例如rabbitmq。

谢谢你的任何想法!

如果你试图在容器启动时立即连接,那么领事还没有准备好接收连接。

您需要编写一个入口脚本来等待连接可用,或者甚至只是重新尝试连接几次。 有关更多信息,请参阅https://docs.docker.com/compose/startup-order/