无法 link Consul 和 Spring 在 Docker 中启动应用程序
Cannot link Consul and Spring Boot app in Docker
我有一个 Spring 具有以下配置的引导应用程序:
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在其他应用中就是这样。
感谢您的任何想法!
如果您尝试在容器启动时立即连接,则 consul 可能尚未准备好接收连接。
您需要编写一个入口点脚本来等待连接可用,或者甚至只是重试连接几次。有关详细信息,请参阅 https://docs.docker.com/compose/startup-order/。
我有一个 Spring 具有以下配置的引导应用程序:
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在其他应用中就是这样。
感谢您的任何想法!
如果您尝试在容器启动时立即连接,则 consul 可能尚未准备好接收连接。
您需要编写一个入口点脚本来等待连接可用,或者甚至只是重试连接几次。有关详细信息,请参阅 https://docs.docker.com/compose/startup-order/。