【问题标题】:How connect to db when running Dockerfile?运行 Dockerfile 时如何连接到 db?
【发布时间】:2021-12-08 21:09:34
【问题描述】:

我有一个 Spring Boot 应用程序,可以很好地连接到我在 Desktop Docker 中本地运行的 PostgreSQL 服务器。

我写了一个简单的 Dockerfile 来在容器中运行我的应用程序。容器启动但无法连接到我的数据库服务器并显示错误消息:

与 localhost:5432 的连接被拒绝。

为什么以及如何解决这个问题?

【问题讨论】:

    标签: java spring-boot docker intellij-idea docker-desktop


    【解决方案1】:

    要从 docker 容器内访问 localhost,您可以使用计算机的 IP。本地主机或 127.0.0.0 不起作用。

    【讨论】:

      【解决方案2】:

      使用 docker compose 连接两个 docker 容器。

      https://docs.docker.com/compose/

      在此页面上,您可以看到如何使用 docker compose 连接到容器的示例:

      https://dev.to/mozartted/docker-networking--how-to-connect-multiple-containers-7fl

      【讨论】:

        【解决方案3】:

        如果它们位于单独的 Docker 网络上,请使用:

        docker.host.internal

        这将连接到 Docker 主机。因此,如果您的 PostgreSQL 实例在 5432 上公开,docker.host.internal 将通过主机从其他容器路由到该实例。

        或者,使用 docker compose 或通过创建网络并将两个容器附加到它们来将它们设置在同一个网络中。然后他们可以与容器名称进行通信。

        https://docs.docker.com/engine/reference/commandline/network_create/

        【讨论】:

          猜你喜欢
          • 2021-08-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-08-18
          • 1970-01-01
          • 2020-11-07
          • 2011-09-21
          • 1970-01-01
          相关资源
          最近更新 更多