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

Docker Compose运行API时出现getaddrinfo EAI_AGAIN错误,无法连接PostgreSQL

解决Docker Compose中API连接PostgreSQL的getaddrinfo EAI_AGAIN错误

核心问题:数据库连接配置错误

你的API连接代码中,host参数错误使用了完整连接字符串格式(postgres://db:5432),但pg.Pool的host字段仅需填写数据库主机地址(服务名/IP),这种格式错误导致DNS解析失败,触发getaddrinfo EAI_AGAIN错误。

修正方案

方案1:拆分连接参数(推荐)

将连接信息拆分为pg.Pool要求的独立参数:

const client = new pg.Pool({
    host: 'db',       // 使用docker-compose中定义的db服务名,同一网络下可直接解析
    port: 5432,       // PostgreSQL默认端口
    user: 'postgres',
    password: 'mypassword',
    database: 'docker'
});

方案2:使用完整连接字符串

如果偏好使用连接字符串,需改用connectionString参数,而非host:

const client = new pg.Pool({
    connectionString: 'postgres://postgres:mypassword@db:5432/docker'
});

额外检查点

  • 确认PostgreSQL服务就绪:depends_on仅保证db容器启动顺序,但不确保PostgreSQL服务完成初始化。执行docker-compose logs db查看日志,确认出现database system is ready to accept connections字样。
  • 添加连接重试逻辑:API启动时可能PostgreSQL尚未就绪,建议在代码中添加连接重试机制,避免一次性启动失败。
  • 验证网络连通性:进入API容器执行ping db,确认能正常解析并访问db服务:
    docker exec -it node-container ping db
    

内容的提问来源于stack exchange,提问作者victor-freitas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 09:22:56