从Docker容器连接到本地postgres数据库

时间:2019-03-27 18:09:49

标签: postgresql docker docker-compose

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

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

如何解决将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

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

1 个答案:

答案 0 :(得分:0)

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

希望这会有所帮助!