docker - 无法在Docker中链接Consul和Spring Boot应用

标签 docker spring-boot docker-compose spring-cloud consul

我有一个具有以下配置的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/

关于docker - 无法在Docker中链接Consul和Spring Boot应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38591295/

相关文章:

docker - Docker机器:Windows中的预创建检查错误

docker - Kubernetes:最大 Pod 生命周期

node.js - 默认值Nodejs

python - Django 静态文件未找到值错误

docker-compose - 限制 docker-compose v3 中的资源

docker - Alpine :WAITINGdocker启动后再继续

docker - 无法使用 Artifactory 插件将 Docker 镜像推送到 Jenkins 管道中的 Artifactory

java - 无法通过 SMTP 从服务器发送邮件,但我可以从本地主机发送邮件

sql - 使用liquibase修改SQL-Server中的数据类型和数据

python - 带有 aiocache 和 Redis 的 FastAPI 无法设置 databases.backends.postgres.Record 对象