运行 Dockerfile 时如何连接到数据库?
How connect to db when running Dockerfile?
我有一个 spring 启动应用程序,可以很好地连接到我的 PostgreSQL 服务器 运行 在本地桌面 Docker。
然后我在容器中为 运行 我的应用程序编写了一个简单的 Docker 文件。容器启动但无法连接到我的数据库服务器并显示错误消息:
与 localhost:5432 的连接被拒绝。
为什么以及如何解决这个问题?
要从 docker 容器内访问本地主机,您可以使用计算机的 IP。 Localhost 或 127.0.0.0 不工作。
使用 docker compose 连接两个 docker 容器。
https://docs.docker.com/compose/
在此页面上,您可以看到有关如何使用 docker compose 连接到容器的示例:
https://dev.to/mozartted/docker-networking--how-to-connect-multiple-containers-7fl
如果它们在单独的 Docker 网络上,请使用:
docker.host.internal
这将连接到 Docker 主机。因此,如果您的 PostgreSQL 实例暴露在 5432 上,docker.host.internal
将从其他容器通过主机路由到该实例。
或者,使用 docker 组合或通过创建网络并将两个容器附加到它们来将它们设置在同一网络中。然后他们可以与容器名称进行通信。
https://docs.docker.com/engine/reference/commandline/network_create/
我有一个 spring 启动应用程序,可以很好地连接到我的 PostgreSQL 服务器 运行 在本地桌面 Docker。
然后我在容器中为 运行 我的应用程序编写了一个简单的 Docker 文件。容器启动但无法连接到我的数据库服务器并显示错误消息:
与 localhost:5432 的连接被拒绝。
为什么以及如何解决这个问题?
要从 docker 容器内访问本地主机,您可以使用计算机的 IP。 Localhost 或 127.0.0.0 不工作。
使用 docker compose 连接两个 docker 容器。
https://docs.docker.com/compose/
在此页面上,您可以看到有关如何使用 docker compose 连接到容器的示例:
https://dev.to/mozartted/docker-networking--how-to-connect-multiple-containers-7fl
如果它们在单独的 Docker 网络上,请使用:
docker.host.internal
这将连接到 Docker 主机。因此,如果您的 PostgreSQL 实例暴露在 5432 上,docker.host.internal
将从其他容器通过主机路由到该实例。
或者,使用 docker 组合或通过创建网络并将两个容器附加到它们来将它们设置在同一网络中。然后他们可以与容器名称进行通信。
https://docs.docker.com/engine/reference/commandline/network_create/