gpt4 book ai didi

python - 无法将 python 应用程序容器连接到本地 postgres

转载 作者:行者123 更新时间:2023-11-29 12:23:21 26 4
gpt4 key购买 nike

我正在尝试通过在容器中运行的 python 脚本连接到本地运行的 postgres。我之所以这样设置,是因为将来一旦部署,我将使用启动 postgres 的托管数据库服务。

理想情况下,我能够在 .env 中定义一个 postgres url,docker-compose 使用 env 设置环境变量,应用程序读取 postgres url。

  1. 这是最好的方法还是我应该有一个 postgres 容器。

  2. 实现我刚才描述的流程的最佳方法。

尝试使用本地主机、公共(public) ip、本地 ip 在 .env 中传递 POSTGRES_URL。例如:postgresql://username:password@localhost:5432/dbname

version: "3.7"

services:
app:
build:
context: ./
dockerfile: Dockerfile
volumes:
- "./:/usr/src/app"
environment:
- ENV=${ENV}
- LOGS=${LOGS}
- AWS_REGION=${AWS_REGION}
- AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID}
- AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY}
- POSTGRES_URL=${POSTGRES_URL}

预期:连接到本地数据库成功。

实际:服务器是否在主机 <"ip"> 上运行并接受端口 5432 上的 TCP/IP 连接?

最佳答案

localhost in container 表示容器本身,而不是docker主机。如果你使用 localhost 访问 postgres,它会尝试在容器中寻找服务,但容器实际上并没有 db 服务。您应该为本地 postgres 设置 docker 主机 ip。

例如如果您的 docker 主机 ip 是 10.192.225.111,那么 .env 中的 POSTGRES_URL 应该是:

postgresql://username:password@10.192.225.111:5432/dbname

关于python - 无法将 python 应用程序容器连接到本地 postgres,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57404177/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com