我有一个spring boot应用程序,它可以很好地连接到在Desktop Docker中本地运行的PostgreSQL服务器。
然后我写了一个简单的Dockerfile来在容器中运行我的应用程序。容器启动,但无法连接到我的数据库服务器,并显示错误消息:
连接到localhost:5432被拒绝。
为什么以及如何解决这个问题?
发布于 2021-10-22 07:55:02
要从docker容器内部访问localhost,您可以使用计算机的IP。Localhost或127.0.0.0无法工作。
发布于 2021-10-22 07:57:29
使用docker compose连接两个docker容器。
https://docs.docker.com/compose/
在此页面上,您可以看到如何使用docker compose连接到容器的示例:
https://dev.to/mozartted/docker-networking--how-to-connect-multiple-containers-7fl
发布于 2021-10-22 07:57:49
如果它们位于不同的Docker网络上,请使用:
docker.host.internal
这将连接到Docker主机。因此,如果您的PostgreSQL实例在5432上公开,docker.host.internal将通过主机从其他容器路由到该实例。
或者,使用docker compose或通过创建网络并将两个容器附加到它们来在同一网络中设置它们。然后,它们可以与容器名称进行通信。
https://docs.docker.com/engine/reference/commandline/network_create/
https://stackoverflow.com/questions/69673209
复制相似问题