NestJS连接PostgreSQL失败:TypeOrmModule无法连接数据库
解决NestJS连接PostgreSQL容器失败的问题
核心问题:端口配置不匹配
你的Docker Compose配置中将容器内部的PostgreSQL默认端口(5432)映射到了主机的5432端口,但.env文件里配置的DB_PORT却是5433,导致NestJS尝试连接错误的端口,引发连接失败。
解决方案
方案1:修改.env文件的端口配置(推荐)
将.env中的DB_PORT改为5432,与Docker映射的主机端口保持一致:
DB_HOST=localhost DB_USERNAME=root DB_PASSWORD=root DB_PORT=5432 DB_NAME=postgres
方案2:修改Docker Compose的端口映射(仅当需要自定义主机端口时使用)
如果必须用5433端口访问数据库,调整Docker Compose的端口映射规则:
version: '3.9' services: postgres: image: postgres:13.3 environment: POSTGRES_DB: 'postgres' POSTGRES_USER: 'root' POSTGRES_PASSWORD: 'root' ports: - '5433:5432'
额外注意事项
- 实体配置缺失:当前
TypeOrmModule配置中entities数组为空,后续需要添加实体类路径(例如entities: [__dirname + '/**/*.entity{.ts,.js}']),否则TypeORM无法识别数据库表结构。 - 重启验证:修改配置后,先重启Docker容器(执行
docker-compose down && docker-compose up),再重启NestJS服务(执行npm run start:dev)。
内容的提问来源于stack exchange,提问作者Sulti
相关产品推荐
相关产品推荐

