【发布时间】:2021-01-30 08:22:42
【问题描述】:
我无法从 Fedora 主机上的应用程序容器连接到数据库容器。我已经验证能够通过 psql 命令行界面使用相同的凭据连接到数据库。在我的应用程序中使用相同的信息不起作用。
这是我的 docker compose 文件
version: '3.3'
services:
postgrestest:
build: ./vrs
command: python3 app.py
volumes:
- ./vrs/:/appuser/
ports:
- 5000:5000
env_file:
- ./.env.dev
depends_on:
- db
db:
image: postgres:12-alpine
volumes:
- postgres_data:/var/lib/postgresql/data/
environment:
- POSTGRES_USER={{user}}
- POSTGRES_PASSWORD={{password}}
- POSTGRES_DB=sharepointvrs
volumes:
postgres_data:
这是用于从应用程序容器内连接到容器的代码:
dbconfig = environment["database"]
try:
connection = psycopg2.connect(
dbname=dbconfig["dbname"], #sharepointvrs
user=dbconfig["user"],
password=dbconfig["password"],
host=dbconfig["host"], # tried 0.0.0.0, localhost, and IP address obtained from docker inspect
port=dbconfig["port"] # 5432
)
connection.autocommit = True
except:
print("Database initialization failed.")
我已经尝试过使用 localhost 和通过运行 docker inspect 获得的 IP:
【问题讨论】:
-
当你尝试连接时,数据库真的启动了吗?您是否阅读过诸如 Networking in Compose 这样描述您可用的主机名的背景材料?
标签: postgresql docker flask docker-compose psycopg2