0

我正在运行 2 个 Spring Boot 应用程序:一个客户端和 rest-api。客户端与与 mongodb 数据库通信的 rest-api 通信。所有 3 层都在 docker 容器内运行。

我启动容器通常会在 dockerfile 中指定公开的端口,并将它们映射到主机上的端口,例如:-p 7070:7070,其中 7070 是 Dockerfile 中公开的端口。

当我通过java -jar [application_name.war]命令运行应用程序时,应用程序工作正常并且它们都可以通信。

但是,当我在 Docker 容器中运行应用程序时,我收到连接被拒绝错误,例如当客户端尝试连接到 rest-api 时,我在http://localhost:7070收到连接被拒绝错误。

但是该命令docker ps显示容器都在运行并侦听暴露和映射的端口。

我不知道为什么容器没有识别出其他容器正在运行并监听它们的端口。

这和iptables有什么关系吗?

任何帮助表示赞赏。

谢谢

编辑 1:在容器内运行的应用程序在我的机器上运行良好,并且它们不会引发任何连接被拒绝错误。该错误仅发生在该特定的不同机器上。

4

1 回答 1

2

我使用容器链接来解决这个问题。确保--link <name>:<alias>在运行时添加到要链接的容器。<name>是您要链接到的容器的名称,<alias>它将是 Spring 的 application.properties 文件中条目的主机/域。

例子:

spring.data.mongodb.host=mongodb如果在运行时提供的别名是“mongodb”:

--link myContainerName:mongodb
于 2015-09-14T21:09:42.697 回答