【问题标题】:Can't connect to DB from container [duplicate]无法从容器连接到数据库 [重复]
【发布时间】:2020-12-25 04:20:08
【问题描述】:

我有一个带有 Node.js 应用程序的 Docker 容器和一个在服务器上运行的 Redis 数据库(而不是在容器中)。在应用程序启动时的容器中,我无法连接到数据库并且我收到以下错误Error: Redis connection to 127.0.0.1:6379 failed - connect ECONNREFUSED 127.0.0.1:6379 但我不明白为什么,因为如果我在服务器上打开 redis-cli 并用 pong 对其进行 ping 操作,那么数据库是起来。

【问题讨论】:

    标签: javascript node.js docker redis containers


    【解决方案1】:

    您需要提供您的 docker 应该使用的网络。要允许它连接到您的主机,请在您的 docker 命令中提供网络

      --network="host"
    

    更新:每条笔记留在 cmets

    理想情况下,您希望将 redis 托管在单独的 docker 实例中或作为外部服务。这将允许您使用 docker 网络设置或通过内部 vpc 中的外部 IP/主机名访问 redis 实例。此解决方案仅用于上述目的,即 redis 存在于托管应用程序 docker 映像的主机中。

    【讨论】:

    • 这通常会禁用 Docker 的网络堆栈,不应该是通用解决方案。
    • @DavidMaze 我提供此解决方案是为了解决上述问题,而不是作为所有 docker 设置的通用解决方案。理想情况下,redis 将存在于自己的 docker 中,因此我们可以使用 docker network 来实现这一点。或者我们将 redis 托管在单独的外部服务中
    猜你喜欢
    • 2019-11-11
    • 1970-01-01
    • 2018-07-28
    • 2016-04-17
    • 1970-01-01
    • 2021-09-11
    • 2016-07-30
    • 2018-10-22
    • 2021-11-10
    相关资源
    最近更新 更多