gpt4 book ai didi

python-3.x - 无法连接到docker容器内的postgres数据库

转载 作者:行者123 更新时间:2023-11-29 14:34:15 25 4
gpt4 key购买 nike

我的问题是我有一个脚本应该废弃数据并将其放入 postgres 数据库,但是它在访问 postgres 容器时遇到问题。

当我运行 docker-compose 时,结果如下:

           Name                     Command               State              Ports             
------------------------------------------------------------------------------------------
orcsearch_dev-db_1 docker-entrypoint.sh postgres Up 0.0.0.0:5432->5432/tcp
orcsearch_flask_1 gunicorn wsgi:application ... Up 0.0.0.0:80->80/tcp, 8000/tcp

我们可以清楚的看到postgres在5432端口。

这是我的 python 脚本数据库设置:(当然我出于明显的原因删除了密码)

class App():
settings = {
'db_host': 'db',
'db_user': 'postgres',
'db_pass': '',
'db_db': 'orc',
}
db = None
proxies = None

这是我的 docker-compose.yml

version: '2'

services:
flask:
build:
context: ./backend
dockerfile: Dockerfile.dev
volumes:
- ./backend:/app
- pip-cache:/root/.cache
ports:
- "80:80"
links:
- "dev-db:db"
environment:
- DATABASE_URL=postgresql://postgres@db:5432/postgres
stdin_open: true
command: gunicorn wsgi:application -w 1 --bind 0.0.0.0:80 --log-level debug --reload
networks:
app:
aliases:
- flask

dev-db:
image: postgres:9.5
ports:
- "5432:5432"
networks:
app:
aliases:
- dev-db

volumes:
pip-cache:
driver: local

networks:
app:

当进入 exec flask bash(在 flask 容器内)并运行脚本命令时,我得到这个错误:

psycopg2.OperationalError: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

显然这个端口上运行着 postgres,我不知道我做错了什么。任何帮助都会很好!

最佳答案

可能您使用的是 DSN 而不是 URI,并且 PostgreSQL 认为“db”不是主机,因为很难判断“db”是主机还是套接字路径。要修复它,如果您使用 >=9.2 版本的 PostgreSQL,请使用 URI 而不是 DSN。

URI 示例:postgresql://[user[:password]@][netloc][:port][/dbname][?param1=value1&...]

https://www.postgresql.org/docs/9.2/static/libpq-connect.html#LIBPQ-CONNSTRING

关于python-3.x - 无法连接到docker容器内的postgres数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47432724/

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