PostgreSQL默认数据库修改失败:环境变量与SQL脚本未生效求助
问题解决:PostgreSQL Docker Compose初始化失效
根因分析
Postgres官方Docker镜像的初始化逻辑(包括应用POSTGRES_DB环境变量、执行/docker-entrypoint-initdb.d/下的脚本)仅在首次初始化数据存储目录时触发。如果你的/custom/mount目录之前已经存储过Postgres数据(比如之前启动过容器未清理),镜像会直接跳过初始化步骤,加载已有数据。
解决步骤
- 停止并移除现有容器
docker-compose down
- 清理自定义挂载目录的旧数据
注意:此操作会彻底删除该目录下的所有数据,请确认数据无保留价值后执行
sudo rm -rf /custom/mount/*
- 重新启动容器
docker-compose up -d
验证方法
- 通过Adminer连接数据库,检查是否存在名为
ecommerce的数据库 - 查看容器日志确认初始化流程执行:
docker-compose logs db
日志中应包含类似以下内容:
database "ecommerce" will be created
running /docker-entrypoint-initdb.d/sql_script.sql
额外注意事项
如果脚本仍未执行,检查本地sql_script.sql的文件权限,确保容器内postgres用户可读取。必要时可在docker-compose.yml的db服务中添加权限修正命令:
services: db: # ... 原有配置 ... command: bash -c "chmod 644 /docker-entrypoint-initdb.d/sql_script.sql && docker-entrypoint.sh postgres"
内容的提问来源于stack exchange,提问作者Rafael Cardoso
相关产品推荐
相关产品推荐

