java - Spring Boot dockerized 应用程序之间的通信

标签 java spring docker spring-boot

我刚开始使用 spring boot 和 docker,但在运行 docker 容器时遇到了问题。 在 Debug模式下,应用程序启动没有问题,但是当我将它们作为容器运行时,出现了问题。 例如,我的服务器配置包含所有 yml 文件以及 eureka 属性。 配置服务器可以完美启动,但 Eureka 服务器不能启动,它必须在配置服务器中查找其配置,因为:

uri: ${vcap.services.config-service.credentials.uri:http://127.0.0.1:8888}

在 Eureka 的日志中我可以找到:

Could not locate PropertySource: I/O error on GET request for "http://127.0.0.1:8888/server-eureka/default":Connection refused; nested exception is java.net.ConnectException: Connection refused

所以我发现 eureka 无法连接到配置服务器,原因我无法理解。 也许我错过了 docker 文件中的某些内容。

最佳答案

如果您不使用 docker 链接容器,则必须仅使用公共(public) IP 地址。 Docker 将为每个正在运行的容器分配一个自己的 IP 地址,默认情况下该地址是不可访问的。仅当您开始公开端口时,才会有一个 iptables 条目将主机公共(public) IP 地址和给定端口链接到 Docker 容器的内部使用端口和(动态分配的)IP 地址。这也是 127.0.0.1 不起作用的原因,因为它会查看容器本地上下文,但服务未运行。

关于java - Spring Boot dockerized 应用程序之间的通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32444287/

相关文章:

java - IntelliJ 的一个 Maven 项目依赖于另一个 Maven 项目 : How to be efficient?

java - 不兼容的类型 : inference variable T has incompatible bounds equality constraints: capture#1 of ? 扩展了 java.lang.Object

java - Spring AMQP - 是否有一种方法负责路由到监听器

spring - 使用 spring boot 托管单页应用程序

docker - 在 docker swarm 中禁用外部节点服务可访问性

postgresql - postgres -c <parameter>=<value> 不适用于 Docker 中的 Postgres 11

java - 在非 Eclipse 环境中使用 Eclipse JDT SDK 生成 AST 时出现异常

Java WebSockets : The remote endpoint was in state [TEXT_FULL_WRITING]

java - 使激活链接永不过期

当我在 Ubuntu 16.04 上下载大文件 (40GB) 时,Docker 构建崩溃