刘光辉
昨天 bb638871a7fb692d80f1b7a758f991dc0879002c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# JNPF PG 迁移标准镜像(方案见 docs/pg-migration-plan.md §1/§4)
# 基底:SWR 搬运的官方 postgres:18.4(= Docker Hub 18.4-trixie,Debian 13 + PG 18.4-1.pgdg13+1,
# 实测 os-release/PG_VERSION 一致,2026-07-17 切换)。SWR 无 -trixie 后缀 tag、单架构 amd64——
# 本镜像经 compose `platform: linux/amd64` 恒定 amd64 构建,无需业务基座那样的 ARG 双轨。
# 2026-07-14 决策修订:业务无 GIS 需求,弃用 postgis/postgis 基底(省 ~200MB、
# 供应链更干净);将来需要地图能力时换回 postgis 基底重打即可。
#
# 构建机残余外部依赖(现场零依赖,产物随离线包走):Debian/PGDG apt + GitHub pg_bigm 源码。
# pg_bigm:PGDG apt 无此包,从官方上游源码编译(v1.2-20250903 起支持 PG18)。
FROM swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/postgres:18.4 AS pg_bigm_builder
 
# Debian apt 换华为云镜像(209MB 工具链的大头提速;debian.sources=Debian 13 deb822 格式)。
# PGDG 保留官方 apt.postgresql.org:其 trixie-pgdg 用版本化组件(main + '18'),国内镜像站
# 普遍只同步 main 缺 '18'(华为云实测缺,TUNA 全但测试服务器 https 不通);官方源包量小
# (server-dev-18+pgvector 约 2MB)且测试服务器实测可达。GitHub 浅克隆 ~100KB 不处理。
RUN sed -i 's|deb.debian.org|mirrors.huaweicloud.com|g' /etc/apt/sources.list.d/debian.sources
 
RUN apt-get update \
    && apt-get install -y --no-install-recommends \
        build-essential \
        postgresql-server-dev-18 \
        libicu-dev \
        git \
        ca-certificates \
    && git clone --depth 1 --branch v1.2-20250903 \
        https://github.com/pgbigm/pg_bigm.git /tmp/pg_bigm \
    && make -C /tmp/pg_bigm USE_PGXS=1 PG_CONFIG=/usr/lib/postgresql/18/bin/pg_config \
    && make -C /tmp/pg_bigm USE_PGXS=1 PG_CONFIG=/usr/lib/postgresql/18/bin/pg_config install
 
FROM swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/postgres:18.4
 
# Debian 换华为云镜像,同 builder 阶段(PGDG 保留官方,理由见上)
RUN sed -i 's|deb.debian.org|mirrors.huaweicloud.com|g' /etc/apt/sources.list.d/debian.sources
 
RUN apt-get update \
    && apt-get install -y --no-install-recommends \
        postgresql-18-pgvector \
    && rm -rf /var/lib/apt/lists/*
 
COPY --from=pg_bigm_builder /usr/lib/postgresql/18/lib/pg_bigm.so /usr/lib/postgresql/18/lib/
COPY --from=pg_bigm_builder /usr/share/postgresql/18/extension/pg_bigm* /usr/share/postgresql/18/extension/