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

如何为Docker Postgres 14镜像添加pg_partman扩展?现有方法无效

为Docker postgres:14镜像安装pg_partman扩展的可行方案

方案一:自定义Dockerfile构建带pg_partman的镜像(生产环境推荐)

通过构建自定义镜像可以永久集成pg_partman,避免容器重启后丢失。以下是完整的Dockerfile内容:

FROM postgres:14

# 安装编译所需依赖
RUN apt-get update && apt-get install -y --no-install-recommends \
    build-essential \
    postgresql-server-dev-14 \
    git \
    make \
    gcc \
    && rm -rf /var/lib/apt/lists/*

# 克隆适配PostgreSQL 14的pg_partman版本(v4.5.0为兼容14的稳定版)
RUN git clone --branch v4.5.0 https://github.com/pgpartman/pg_partman.git /tmp/pg_partman

# 编译并安装扩展
RUN cd /tmp/pg_partman && make && make install

# 清理冗余依赖和临时文件,减小镜像体积
RUN apt-get purge -y --auto-remove build-essential git make gcc \
    && rm -rf /tmp/pg_partman

构建镜像命令:

docker build -t postgres14-pgpartman .

启动容器时,该镜像已包含pg_partman,直接在PostgreSQL中启用即可。

方案二:运行中的容器内临时安装(仅用于测试)

如果只是临时测试,可直接在运行的postgres容器内编译安装:

  • 进入容器终端:
docker exec -it <你的postgres容器ID/名称> bash
  • 安装编译依赖:
apt-get update && apt-get install -y build-essential postgresql-server-dev-14 git make gcc
  • 克隆并安装pg_partman:
git clone --branch v4.5.0 https://github.com/pgpartman/pg_partman.git /tmp/pg_partman
cd /tmp/pg_partman && make && make install

启用pg_partman扩展

无论采用哪种方案,最后都需要在PostgreSQL中创建扩展:
进入psql终端(可通过docker exec -it <容器ID/名称> psql -U <用户名>),执行:

CREATE EXTENSION pg_partman;

若需指定schema,可执行:

CREATE EXTENSION pg_partman WITH SCHEMA public;

注意事项

  • 必须确保pg_partman版本与PostgreSQL 14兼容,推荐使用v4.x系列版本,避免因版本不匹配导致安装失败。
  • 生产环境优先使用自定义镜像方案,临时安装的扩展会在容器销毁或重启后丢失。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 14:32:53