# 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/
