PG-16-Extensions

PG-16-Extensions

Posted by laohuang on Wednesday, July 23, 2025

配置 Bitnami pg-16 的postgis 和 pg_jieba 插件

Bitnami 的镜像有严格安全规则,直接在镜像里面编译/部署不行。 先下载 Debian-12 镜像,然后在里面编译

Dockerfile:

FROM debian:bookworm

RUN apt update && \
    apt install -y postgresql-common && \
    /usr/share/postgresql-common/pgdg/apt.postgresql.org.sh -y && \
    apt install -y wget curl git cmake  g++ postgresql-16 postgresql-client-16 libpq-dev postgresql-server-dev-16 && \
    git clone https://github.com/jaiminpan/pg_jieba && \
    cd pg_jieba && \
    git submodule update --init --recursive && \
    mkdir build && \
    cd build && \
    cmake  -DCMAKE_CXX_FLAGS="-Wall -std=c++11"   -DCMAKE_PREFIX_PATH=/usr/include/postgresql/16/server/   .. && \
    make && \
    make install && \

记住编译后安装的文件

Install the project...
-- Install configuration: ""
-- Installing: /usr/lib/postgresql/16/lib/pg_jieba.so
-- Installing: /usr/share/postgresql/16/extension/pg_jieba.control
-- Installing: /usr/share/postgresql/16/extension/pg_jieba--1.1.1.sql
-- Installing: /usr/share/postgresql/16/tsearch_data/jieba_base.dict
-- Installing: /usr/share/postgresql/16/tsearch_data/jieba_hmm.model
-- Installing: /usr/share/postgresql/16/tsearch_data/jieba_user.dict
-- Installing: /usr/share/postgresql/16/tsearch_data/jieba.stop
-- Installing: /usr/share/postgresql/16/tsearch_data/jieba.idf

下载 Bitnami-pg16 ,并启动

docker-compose.yml

services:
  postgresql:
    image: docker.io/bitnami/postgresql:16.4.0-debian-12-r14
    ports:
      - '5432:5432'
    volumes:
      - 'postgresql_data:/bitnami/postgresql'
    environment:
      - 'ALLOW_EMPTY_PASSWORD=yes'

volumes:
  postgresql_data:
    driver: local

启动后找到 docker 本地运行目录

docker inspect pg-16-postgresql-1 | jq '.[].GraphDriver'
{
  "Data": {
    "LowerDir": "/var/lib/docker/overlay2/0fcb6623bc59638f4b1966dd77a5dbb2b721cb6a809615ece11f6afe8eb40704-init/diff:/var/lib/docker/overlay2/8059768e26e71dda85cf9dc010f8eedd23a079ff31237f963178d753c7cce9d0/diff",
    "MergedDir": "/var/lib/docker/overlay2/0fcb6623bc59638f4b1966dd77a5dbb2b721cb6a809615ece11f6afe8eb40704/merged",
    "UpperDir": "/var/lib/docker/overlay2/0fcb6623bc59638f4b1966dd77a5dbb2b721cb6a809615ece11f6afe8eb40704/diff",
    "WorkDir": "/var/lib/docker/overlay2/0fcb6623bc59638f4b1966dd77a5dbb2b721cb6a809615ece11f6afe8eb40704/work"
  },
  "Name": "overlay2"
}

进入目录

cd /var/lib/docker/overlay2/0fcb6623bc59638f4b1966dd77a5dbb2b721cb6a809615ece11f6afe8eb40704/merged/opt/bitnami/postgresql/

把上面编译的文件 copy 到对应的 bitnami 目录下

然后把运行的 docker 导出成 image ,并上传到自己的 hub 仓库

docker commit  pg-16-postgresql-1 bitnami-pg:16.4.0
docker tag bitnami-pg:16.4.0 swr.cn-east-3.myhuaweicloud.com/bitnami-pg:16.4.0
docker push swr.cn-east-3.myhuaweicloud.com/bitnami-pg:16.4.0

这样有 pg_jiba 的 bitnami pg-16 镜像制作完成,部署到 K8 的时候,指定如下参数

image:
  registry: swr.cn-east-3.myhuaweicloud.com
  repository: bitnami-pg
  tag: 16.4.0

Helm 对应的版本是:15.5.38

helm search repo bitnami/postgresql --version=15.5.38
NAME              	CHART VERSION	APP VERSION	DESCRIPTION
bitnami/postgresql	15.5.38      	16.4.0     	PostgreSQL (Postgres) is an open source object-...

「真诚赞赏,手留余香」

LaoHuang Blog

真诚赞赏,手留余香

使用微信扫描二维码完成支付