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

配置Docker-Compose、Express与TypeORM连接容器内PostgreSQL遇错求助

容器间PostgreSQL连接失败问题解决

问题描述

自行编写Docker Compose配置,尝试将集成TypeORM的Express服务(容器名express_be)与PostgreSQL容器(容器名postgres_be)通过自定义桥接网络efinternal建立连接时,出现getaddrinfo ENOTFOUND efinternal错误,连接失败。

核心错误原因

TypeORM连接配置中,将网络名称efinternal当作数据库主机名使用,这是错误的。在Docker Compose的同一自定义网络中,容器间通信需要使用服务名称而非网络名称来解析地址。

解决方案

1. 修正TypeORM连接配置

将host字段的值从efinternal改为Docker Compose中PostgreSQL服务的名称postgres_db:

export const AppDataSource = new DataSource({
    type: "postgres",
    host: "postgres_db", // 改为服务名postgres_db
    port: 5432,
    username: "postgres",
    password: "postgres",
    database: "postgres",
    synchronize: true,
    logging: true,
    entities: [User, Committee, Task, OnboardingStep, RefreshToken, PasswordToken],
    subscribers: [],
    migrations: [],
});

2. 确认PostgreSQL监听配置

从日志可以看到PostgreSQL已正确监听0.0.0.0:5432,这个配置无需修改。0.0.0.0表示监听容器内所有网络接口,同一网络下的Express容器可以正常访问。

补充说明

  • depends_on仅保证容器启动顺序,不确保PostgreSQL服务完全就绪。如果后续遇到数据库未就绪的连接问题,可以添加wait-for-it等脚本等待数据库端口可用。
  • 无需使用external_links,当前自定义网络efinternal已正确配置,同一网络内的服务默认可以互相访问。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 20:30:42