You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Podman Compose部署后无法连接PostgreSQL的问题求助

解决Podman Compose下PostgreSQL连接问题

问题1:Flask应用无法解析db主机名

报错提示could not translate host name "db" to address: Temporary failure in name resolution,核心原因是两个容器未处于同一Podman网络,或网络DNS解析异常。

解决步骤:

  • 先检查容器所属网络:
    执行podman inspect flask-podman_db_1 | grep Networks和podman inspect flask-podman_web_1 | grep Networks,确认两个容器的网络名称一致(默认应为flask-podman_default)。
  • 若网络不一致,修改docker-compose.yml显式指定共享网络:
    在配置末尾添加网络定义,并给两个服务绑定该网络:
    services:
      web:
        # 原有配置保留
        networks:
          - app-network
      db:
        # 原有配置保留
        networks:
          - app-network
    
    networks:
      app-network:
        driver: bridge
    
    随后执行podman-compose down,再podman-compose up -d重启服务。
  • 验证:进入web容器执行ping db,能ping通则域名解析正常。

额外补充:即便网络正常,也可能出现数据库未就绪就发起连接的情况,可在Flask应用的SQLAlchemy引擎配置中添加重试逻辑:

engine = create_engine(DATABASE_URL, pool_pre_ping=True)

问题2:本地主机无法用psql连接容器内PostgreSQL

本地执行psql -U postgres时,默认会尝试连接本地Unix域套接字,但容器内的PostgreSQL套接字不在主机文件系统中,需指定连接的主机和端口:

执行以下命令连接:

psql -U postgres -h localhost -p 5432

输入密码1234即可登录。若需直接指定密码,可使用:

PGPASSWORD=1234 psql -U postgres -h localhost -p 5432

内容的提问来源于stack exchange,提问作者Donbeo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 16:52:33