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

Docker部署PostgreSQL无法连接Spring Boot项目问题排查

问题分析与修复方案

你的配置存在两个关键错误,导致Spring Boot无法连接PostgreSQL,甚至引发容器异常:

1. Docker Compose端口映射错误

PostgreSQL容器默认监听5432端口,但你的配置把宿主机8081端口映射到了容器的8081端口——容器内根本没有服务在8081端口运行,这直接导致Spring无法连接到数据库服务。

修正后的Docker Compose配置:

services:
  postgres:
    container_name: newlife
    image: postgres
    environment:
      POSTGRES_USER: local
      POSTGRES_PASSWORD: local
      PGDATA: /data/postgres
      # 新增:指定初始化的数据库名,与Spring配置中的online对应
      POSTGRES_DB: online
    volumes:
      - postgres:/data/postgres
    ports:
      # 宿主机8081端口映射到容器默认的5432端口
      - "8081:5432"
    networks:
      - postgres
    restart: unless-stopped
networks:
  postgres:
    driver: bridge
volumes:
  postgres:

2. Spring Boot数据库连接URL的数据库名不匹配

你的Spring配置里指定连接online数据库,但默认情况下PostgreSQL容器只会创建一个与POSTGRES_USER同名的数据库(即local),不会自动生成online库。解决方式二选一:

  • 按上面的Docker Compose配置添加POSTGRES_DB=online环境变量,自动初始化目标数据库
  • 或者修改Spring配置中的数据库URL为:
spring:
  datasource:
    url: jdbc:postgresql://localhost:8081/local

额外操作建议

如果之前已经启动过容器,建议先清理旧容器和数据卷,避免旧数据干扰:

docker-compose down -v

再重新启动容器:

docker-compose up -d

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 01:31:25