【发布时间】:2022-12-06 01:37:47
【问题描述】:
在虚拟机上,我有 2 个 docker 容器以名称 <postgres> 和 <system> 运行,它们在网络上以名称 <network> 运行。我无法更改这些容器中的选项。我创建了一个连接到数据库并输出所需信息的烧瓶应用程序。从我使用的本地计算机连接
conn = psycopg2.connect(
database="db", user='user1', password='user1_passwd'
host='<VM_ip>', port='<db_port>',
sslmode='require',
sslcert='./user1.crt',
sslkey='./user1.key')
效果很好。
但是,当我在同一个虚拟机上运行我的应用程序并指定
conn = psycopg2.connect(
database="db", user='user1', password='user1_passwd'
host='<postgres>.<network>', port='<db_port>',
sslmode='require',
sslcert='./user1.crt',
sslkey='./user1.key')
我得到一个错误:
psycopg2.OperationalError: could not parse network address \"<postgres>.<network>\": Name or service not known.
pg_hba 允许本地连接,问题是从 VM 中的新容器连接。
这是我的新容器的设置:
version: '3'
services:
app:
container_name: app
restart: always
build: ./app
ports:
- "5000:5000"
command: gunicorn -w 1 -b 0.0.0.0:8000 wsgi:server
我尝试建立与本地计算机相同的连接,指定 VM_ip,但这也无济于事。
我还尝试在host=中指定<postgres>容器ip而不是其名称,但这也导致了错误。
你知道可能是什么问题吗?
【问题讨论】:
标签: postgresql docker flask psycopg2