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

运行docker-compose时出现PostgreSQL连接localhost:5432被拒绝错误

错误原因
  • 端口配置不匹配:PostgreSQL官方镜像默认内部监听端口为5432,你在docker-compose的postgres服务配置中,错误将内部暴露端口、端口映射都设置为了5430,导致postgres容器内部没有开放5432端口,app服务自然无法通过postgres:5432访问到数据库。
  • 配置优先级问题:你虽然修改了本地的application.properties文件,但如果没有重新打包生成jar包,Dockerfile中复制的还是旧的jar包,旧配置依然生效;另外如果你Spring Boot代码中没有读取docker-compose里传入的POSTGRES_URL环境变量的话,这个环境变量也不会覆盖配置文件里的url。
  • 端口配置不一致:你在application.properties中配置的服务端口是8086,但docker-compose里app服务的暴露端口、端口映射都写的是8081,会导致服务启动后无法正常对外提供访问。
  • 数据库启动时序问题:depends_on只能保证postgres容器先于app容器启动,无法保证Postgres服务内部初始化完成、可以接受连接时才启动app,若app启动过快也会出现连接拒绝错误。
解决方案
  1. 修正postgres服务的端口配置,修改docker-compose.yml中postgres服务的expose、ports字段:
postgres:
    image: postgres:latest
    network_mode: bridge
    container_name: postgres
    volumes:
      - postgres-data:/var/lib/postgresql/data
    expose:
      - 5432 # 暴露postgres默认内部端口
    ports:
      - 5430:5432 # 宿主机5430映射到容器内部5432
    environment:
      - POSTGRES_PASSWORD=root
      - POSTGRES_USER=postgres
      - POSTGRES_DB=employees
  1. 同步Spring Boot配置逻辑:如果你要使用docker-compose传入的POSTGRES_URL环境变量,将application.properties中的spring.datasource.url修改为读取环境变量,避免硬编码和配置不同步问题:
spring.datasource.url=${POSTGRES_URL:jdbc:postgresql://postgres:5432/employees}

修改配置后重新执行mvn clean package(或对应gradle打包命令)生成新的jar包,再重新构建app镜像。

  1. 修正app服务的端口配置,增加异常重启策略解决启动时序问题:
app:
    image: app
    network_mode: bridge
    container_name: app
    expose:
      - 8086 # 和application.properties里配置的server.port保持一致
    ports:
      - 8081:8086 # 宿主机8081映射容器内部8086
    depends_on:
      - postgres
    links:
      - postgres
    restart: on-failure # 连接数据库失败时自动重启,规避数据库未就绪问题
    environment:
      - POSTGRES_PASSWORD=root
      - POSTGRES_USER=postgres
      - POSTGRES_DB=employees
      - POSTGRES_URL=jdbc:postgresql://postgres:5432/employees
  1. 全部修改完成后执行以下命令重启服务:
docker-compose down -v # 清除旧的卷避免旧数据干扰
docker-compose up --build # 重新构建镜像并启动

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 18:57:03