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

运行docker-compose up时遭遇数据库未初始化错误求助

解决Docker Compose启动时的"database uninitialized"错误

核心问题分析

你的docker-compose.yml配置存在几个关键错误,直接导致了数据库初始化失败的问题:

  1. app服务镜像配置冲突:app服务同时指定了image: postgres:latest和build,这会让Docker尝试用postgres镜像覆盖你构建的Java应用镜像,完全偏离了服务定位。
  2. 环境变量配置错误:app服务里的POSTGRES_PASSWORD是postgres容器的配置变量,你的Java应用不需要这个,反而缺少连接数据库的必要配置。
  3. 依赖启动逻辑不严谨:depends_on仅保证postgres先启动,但不等待数据库完全就绪,app启动时数据库可能还在初始化,导致连接失败。

修复步骤

1. 修正docker-compose.yml配置

services:
  app:
    build:
      context: .
    container_name: app-demo
    depends_on:
      postgres:
        condition: service_healthy  # 等待postgres健康检查通过再启动
    environment:
      # 替换为你的Java应用数据库连接配置(以Spring Boot为例)
      - SPRING_DATASOURCE_URL=jdbc:postgresql://postgres:5432/mydatabase
      - SPRING_DATASOURCE_USERNAME=testuser
      - SPRING_DATASOURCE_PASSWORD=secret
    ports:
      - '8090:8080'
    restart: always

  postgres:
    image: 'postgres:latest'
    container_name: test-postgres
    environment:
      - POSTGRES_DB=mydatabase
      - POSTGRES_PASSWORD=secret
      - POSTGRES_USER=testuser
    ports:
      - '5432:5432'
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U testuser -d mydatabase"]
      interval: 5s
      timeout: 5s
      retries: 5

2. 优化Dockerfile(修复重复复制问题)

# Use an OpenJDK Runtime as a parent image
FROM openjdk:21-jdk
# Set the working directory to /app
WORKDIR /app
# Copy maven executable to the image
COPY mvnw .
COPY .mvn .mvn

# Copy the pom.xml file
COPY pom.xml .

# Copy the project source
COPY ./src ./src

RUN chmod 755 /app/mvnw

RUN ./mvnw dependency:go-offline -B

RUN ./mvnw package
ENTRYPOINT ["java","-jar","target/demo_app-0.0.1-SNAPSHOT.jar"]

3. 补充说明

  • 确保你的application.properties(或application.yml)里的数据库配置和docker-compose中app服务的环境变量一致,或者直接通过环境变量覆盖配置文件内容。
  • 健康检查配置会让Docker等待postgres容器完全就绪后再启动app服务,避免因数据库未初始化完成导致的连接错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 05:06:06