我的任务是编写一个脚本,该脚本从远程计算机接收信息并将接收到的信息记录在本地的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
=---------------------------------------------------=
答案 0 :(得分:0)
问题是您正在尝试从容器内连接到“ localhost”。用俗语来说,“本地主机”是指“此计算机”或“我正在使用的计算机”。所有对localhost的请求都将重定向回监听localhost接口的所有进程。在容器内部,localhost
接口与容器外部的localhost
接口不同。在这种情况下,您应该考虑使数据库在0.0.0.0
或计算机的IP地址上进行侦听。然后,您可以从容器中使用计算机的IP地址连接到数据库。
希望这会有所帮助!