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

Docker部署NodeJS应用无法连接PostgreSQL数据库问题求助

问题1:数据库连接地址配置错误

你在docker-compose中给web服务配置的DB环境变量里,数据库地址填的是localhost,但Docker容器内部的localhost指向的是web容器本身,不是同网络下的PostgreSQL容器。Docker Compose默认会给同个配置下的服务创建内部网络,直接用服务名db作为数据库地址即可。
修改docker-compose里web服务的环境变量:

DB: 'postgres://postgres:test123@db:5432/testing'

问题2:访问路径不匹配

你配置的接口路由是/api/status,直接访问http://ip:3000根路径会触发你代码里定义的404报错,部署后访问http://ip:3000/api/status即可拿到预期返回。

可选优化:解决PostgreSQL启动未就绪问题

depends_on只能保证容器启动顺序,不能保证PostgreSQL完成初始化、可以接受连接,如果修改后还偶尔出现连接失败的情况,可以给db服务加健康检查,保证web服务在数据库就绪后再启动:

version: "3.2"
services:
  db:
    image: postgres
    environment:
      POSTGRES_PASSWORD: test123
      POSTGRES_DB: testing
    volumes:
      - ./pgdata:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U postgres"]
      interval: 3s
      timeout: 3s
      retries: 3
  web:
    build: .
    command: npm start app.js
    depends_on:
      db:
        condition: service_healthy
    environment:
      DB: 'postgres://postgres:test123@db:5432/testing'
    ports:
      - "3000:3000"

修改完成后重新执行docker-compose up --build即可正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 12:15:00