Wszystkie istotne zmiany w tym repo są dokumentowane tutaj.
Format: Keep a Changelog,
wersjonowanie tagów git: kalendarzowe vYYYYMMDD (sufiks .N gdy >1/dzień).
Tagi Docker są niezależne: psql-<X.Y> i psql-<X> z docker-bake.hcl.
autotune.sh— portautotune.pyna czysty shell + awk (bez Pythona), identyczny bajt w bajt (zweryfikowane: wymuszony RAM, autodetekcja host/cgroup, tryb unsafe, override locków). Self-test:sh autotune.sh --test.- Tryb „bez budowania obrazu" (Option B): entrypoint i autotune można
podmontować (bind-mount) do oficjalnego obrazu
postgres— nie trzeba budować własnego obrazu. Polskie sortowanie zapewnia ICU, więc systemowy localepl_PL(aniLANG) nie jest potrzebny. Przykład:examples/docker-compose.yml.
docker-entrypoint-autotune.shjest teraz Python-free (wołaautotune.sh) i respektuje$PGDATAzamiast sztywnej ścieżki — dzięki czemu działa też podmontowany na stockowympostgres.- CI: self-test autotune to teraz
sh autotune.sh --test(bezsetup-python).
- Cały własny obraz i pipeline jego budowy. Usunięto
Dockerfile,docker-bake.hcl,DOCKERHUB.mdoraz zadania build/scan/push/scout/ dockerhub w CI. Repo nie publikuje już obrazuiplweb/bpp_dbserver— autotune + ICU pl-PL uruchamia się przez bind-mount na oficjalnympostgres(patrzexamples/docker-compose.yml). CI sprowadza się teraz do self-testu,pre-commiti smoke testu na stockowympostgres:16/17/18. - Wraz z obrazem znika systemowy locale
pl_PL(generowany w buildzie) — polskie sortowanie i tak zapewnia ICU.plpython3uoraz Python (python3/python-is-python3) usunięte już wcześniej; autotune jest w czystym shellu.
- Locale
pl_PL.UTF-8jest teraz generowane poapt-get upgrade(wcześniej przed instalacją pakietów). Na obrazie bazowym Debian trixieapt-get upgradepodciąga nowy glibc/locales i regeneruje/usr/lib/locale/locale-archive, kasując locale zbudowane wcześniej — przez coinitdbpadał zinvalid locale settings.
- Domyślny build jest teraz multi-arch:
linux/amd64+linux/arm64. Default zmiennejPLATFORMwdocker-bake.hclzmieniony zlinux/amd64nalinux/amd64,linux/arm64. Cel: natywne wsparcie Apple Silicon (Mac M1/M2/M3) bez emulacji QEMU. CI smoke test dalej leci nalinux/amd64(runner GH Actions amd64,--loadnie obsługuje multi-arch); multi-arch idzie dopiero w kroku push do Docker Hub. Dla single-arch lokalnie:docker buildx bake --set "*.platform=linux/amd64".
docker-entrypoint-autotune.sh: dodaneset -Eeuo pipefail. Bez tego niepowodzeniedocker-ensure-initdb.sh(np. konflikt layoutu PGDATA na PG18 przy starszym obrazie) nie zatrzymywało skryptu, który dalej dopisywałinclude_if_existsdo hardcoded/var/lib/postgresql/data/postgresql.conf, zaśmiecając zamontowany volume i blokując kolejne próbyinitdb(initdb wymaga pustego katalogu).
- CI: smoke test obrazu przed pushem do Docker Hub. Build zawsze robi
--load, następnie dla każdego majora PG 16/17/18 startuje kontener, czeka napg_isready, weryfikujeCREATE EXTENSION plpython3uoraz obecność kolacjipl-x-icu. Push na Docker Hub tylko przy taguv*(lubworkflow_dispatchzpush_to_registry=true) i wyłącznie gdy smoke przeszedł. Job odpala się teraz też na PR/main (bez pusha), żeby łapać regresje przed releasem.
- Wymuszenie klasycznego layoutu
PGDATA=/var/lib/postgresql/datawDockerfile. Upstreampostgres:18+zmienił default na/var/lib/postgresql/<major>/docker, co łamało hardcoded ścieżki wdocker-entrypoint-autotune.shi kompatybilność z istniejącymi volume'ami PG16/17. Override jest no-opem dla PG16/17 (ich default) i fixem dla PG18.
- Wydzielenie obrazu
iplweb/bpp_dbserverz monorepoiplweb/bppdo osobnego repozytoriumiplweb/bpp-dbserver. - Matrix build po
POSTGRES_VERSIONSwdocker-bake.hcl— jeden bake buduje PG 16, 17 i 18 równolegle. - GH Actions workflow (
.github/workflows/build.yml): trigger na tagv*, build matrix, push do Docker Hub, Trivy scan per major. - README z logo BPP oraz IPL Web, linkami do iplweb.pl i bpp.iplweb.pl i pełną dokumentacją parametrów runtime (standardowe PG + autotune env vars).
LICENSE(MIT, PL + EN).CLAUDE.md— krótki opis architektury i komend dla sesji Claude Code.- Dependabot dla bazowego obrazu
postgres:*i GH Actions dependencies.
Dockerfileużywa${PG_MAJOR}z base image do instalacjipostgresql-plpython3-*— bez hardcodowanej wersji major.- Bump PostgreSQL: 16.6 → 16.13, 17.2 → 17.9, 18.0 → 18.3 (najnowsze stabilne patche wg postgresql.org/support/versioning).
- Schemat tagowania Docker: tag
:latestnie jest publikowany. Zamiast tego publikowane są wyłącznie tagi wersjonowane:psql-<X.Y>(pin patch) ipsql-<X>(rolling minor w ramach major). Cel: zapobiec przypadkowemu pullowi niekompatybilnej major wersji, który mógłby uszkodzićPGDATA. - Schemat tagowania git: kalendarzowy
vYYYYMMDD(+ sufiks.N), niezależny od schematu tagów Docker.