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

Spring Boot应用连接Docker中PostgreSQL被拒绝,求错误排查

问题排查与解决

核心错误原因及修复方案

1. 数据库端口配置错误

容器间通信时,应使用PostgreSQL容器内部端口5432,而非映射到主机的5433端口。docker-compose中服务间通过服务名(postgres)直接访问时,端口需用容器自身的端口,5433:5432仅用于主机外部访问容器内的数据库。

修改app的数据源URL:

SPRING_DATASOURCE_URL=jdbc:postgresql://postgres:5432/animals

2. 数据库密码不匹配

Spring Boot应用配置的密码是s,但PostgreSQL容器设置的密码是darsmeved,两者不一致会导致后续认证失败(需先解决连接拒绝问题,再修正此配置)。

修改app的密码配置:

SPRING_DATASOURCE_PASSWORD=darsmeved

3. 容器启动顺序的潜在问题

depends_on: - postgres仅保证postgres容器先启动,但不确保PostgreSQL服务已完全就绪。可给postgres服务添加健康检查,确保数据库服务可用后再启动app:

更新postgres服务配置:

postgres:
  image: postgres:latest
  container_name: postgres
  environment:
    POSTGRES_DB: animals
    POSTGRES_USER: postgres
    POSTGRES_PASSWORD: darsmeved
  ports:
    - '5433:5432'
  restart: always
  healthcheck:
    test: ["CMD-SHELL", "pg_isready -U postgres -d animals"]
    interval: 5s
    timeout: 5s
    retries: 5

同时给app服务添加健康检查依赖:

app:
  # 其他配置不变
  depends_on:
    postgres:
      condition: service_healthy

修复后的完整docker-compose.yml示例

version: '2'

services:
  app:
    image: 'docker-spring-boot-postgres:latest'
    build:
      context: .
    container_name: app
    depends_on:
      postgres:
        condition: service_healthy
    environment:
      - SPRING_DATASOURCE_URL=jdbc:postgresql://postgres:5432/animals
      - SPRING_DATASOURCE_USERNAME=postgres
      - SPRING_DATASOURCE_PASSWORD=darsmeved
      - SPRING_JPA_HIBERNATE_DDL_AUTO=update

  postgres:
    image: postgres:latest
    container_name: postgres
    environment:
      POSTGRES_DB: animals
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: darsmeved
    ports:
      - '5433:5432'
    restart: always
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U postgres -d animals"]
      interval: 5s
      timeout: 5s
      retries: 5

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 06:35:23