首页 > 解决方案 > 从 Docker 容器连接到本地 postgres 数据库

问题描述

我的任务是编写一个从远程计算机接收信息的脚本,并将接收到的信息记录在本地 Postgres 数据库中。测试成功。数据来了,数据库更新了。

下一步是将此脚本放置在 docker 容器中。Dockerfile 和 Docker-Compose.yml 附在下面。我通过 Volume 将带有工作程序的环境添加到容器中。docker 容器在 postgres 数据库所在的本地机器上运行。postgres + psycopg2: // postgres: hi123 @ localhost: 5432 /当我运行图像时,我控制程序的工作流程并观察从远程计算机接收到的数据,但不会发生将消息写入地址的 postgres 数据库 - Back。

如何解决将 docker 容器连接到本地数据库的问题?

=---------Dockerfile---------=
FROM python:latest
WORKDIR /backend
COPY requirements.txt /backend/
RUN pip install -r requirements.txt
=----------------------------=

=-----Docker-compose.yml-----=
    version: '3'

    services:
      back:
        image: git_rep_2_back:latest
        environment:
          - PYTHONPATH=/backend/
        volumes:
          - "./Platform:/backend"
        command: bash -c "cd server && python launcher.py"
=-----------------------------=

=-------configfile_for_connection_to_database-------=

postgres+psycopg2://postgres:hi123@localhost:5432/Back

=---------------------------------------------------=

标签: postgresqldockerdocker-compose

解决方案


问题是您试图从容器内连接到“localhost”。通俗地说,“localhost”是指“这台计算机”或“我正在使用的计算机”。所有对 localhost 的请求都将被重定向回侦听 localhost 接口的任何进程。容器内部的接口与容器外部的localhost接口不同。localhost在这种情况下,您应该考虑让您的数据库监听0.0.0.0或监听您机器的 IP 地址。然后,在容器中,您可以使用您机器的 IP 地址连接到您的数据库。

希望这可以帮助!


推荐阅读