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

升级PostgreSQL镜像后docker-entrypoint.sh失效,容器构建报错求助

解决PostgreSQL Docker镜像升级后的构建错误及数据库访问问题

错误原因分析

你遇到的exit code: 127错误核心原因有两个:

  1. 脚本路径变更:新版本PostgreSQL官方镜像(如13.21、17.5)已将docker-entrypoint.sh从根目录/移至/usr/local/bin/,旧路径调用自然找不到命令。
  2. 构建阶段调用逻辑错误:docker-entrypoint.sh是为容器启动时初始化数据库设计的,构建阶段没有PostgreSQL服务运行的必要环境,旧版本能执行--help属于偶然情况,新版本脚本逻辑已调整,不支持在构建阶段直接调用。

移除RUN指令后数据库无法访问,大概率是customization目录下的初始化脚本与新版本PostgreSQL不兼容,而非移除指令本身导致。

解决方案

1. 移除无意义的构建阶段脚本调用

直接删除Dockerfile中的RUN /docker-entrypoint.sh --help指令,这条指令对镜像构建和容器运行没有实际作用,反而会引发构建失败。

2. 确保自定义初始化脚本兼容性

针对数据库无法访问的问题,检查customization目录下的脚本:

  • 验证SQL语法是否符合新版本要求(如部分旧版函数、配置项已被废弃)
  • 确认脚本命名和执行顺序(官方镜像按文件名顺序执行.sh、.sql、.sql.gz格式文件)
  • 修复PGDATA目录权限:新版本镜像对数据目录权限要求更严格,添加指令确保权限正确:
    RUN mkdir -p /pgdata && chown -R postgres:postgres /pgdata
    

3. 修正后的Dockerfile示例

FROM postgres:17.5-alpine
ENV PGDATA=/pgdata
RUN mkdir -p /pgdata && chown -R postgres:postgres /pgdata
ADD customization /docker-entrypoint-initdb.d/

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 01:26:03