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

Docker部署PostgreSQL数据库不存在问题求助(SpringBoot场景)

问题分析与解决方案

核心问题:数据卷挂载路径错误

你的Docker启动命令中,将本地目录挂载到了容器内的/var/lib/postgresql,但PostgreSQL容器默认的数据存储目录是/var/lib/postgresql/data。错误的挂载路径会覆盖容器内的PostgreSQL目录结构,导致初始化逻辑无法正常创建你指定的dev数据库。

修复步骤

  1. 修正Docker挂载路径
    修改docker run命令中的挂载参数,将目标路径改为/var/lib/postgresql/data:

    docker run --rm --name pg-docker -e POSTGRES_PASSWORD=... -e POSTGRES_DB=dev -d -p 5432:5432 -v $HOME/docker/volumes/postgres/data:/var/lib/postgresql/data postgres
    

    同时调整脚本中的目录创建逻辑:

    mkdir -p $HOME/docker/volumes/postgres/data
    # 如需清理旧数据,可执行:rm -rf $HOME/docker/volumes/postgres/data/*
    
  2. 替换固定sleep,等待PostgreSQL完全就绪
    固定的sleep 3可能不足以让PostgreSQL完成启动初始化,改用pg_isready命令等待服务就绪:

    export PGPASSWORD=...
    # 最多等待30秒,直到PostgreSQL服务可用
    until pg_isready -U postgres -h localhost -p 5432; do
      echo "等待PostgreSQL启动..."
      sleep 1
    done
    

    之后再执行SQL脚本:

    psql -U postgres -d dev -h localhost -f schema.sql
    psql -U postgres -d dev -h localhost -f data.sql
    
  3. 验证数据库状态
    修复后重新执行脚本,然后进入容器确认dev数据库是否存在:

    docker exec -it pg-docker psql -U postgres -c "\l"
    

额外检查

  • 确认schema.sql和data.sql文件位于脚本执行的当前目录下(匹配你的文件结构)。
  • SpringBoot的application.properties配置无需修改,待数据库正常运行后即可启动应用连接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 08:55:17