Skip to content
This repository was archived by the owner on Jun 13, 2026. It is now read-only.

Zrezygnuj z własnego obrazu — autotune w shellu, bind-mount na stock postgres#8

Merged
mpasternak merged 1 commit into
mainfrom
no-plpython
Jun 13, 2026
Merged

Zrezygnuj z własnego obrazu — autotune w shellu, bind-mount na stock postgres#8
mpasternak merged 1 commit into
mainfrom
no-plpython

Conversation

@mpasternak

Copy link
Copy Markdown
Member

Co i dlaczego

BPP-strojony PostgreSQL uruchamiamy teraz na oficjalnym obrazie postgres przez bind-mount — bez budowania własnego obrazu. Okazało się, że całą wartość (autotune + ICU pl-PL) da się dostarczyć dwoma podmontowanymi plikami + zmiennymi środowiskowymi.

Zmiany

  • autotune.sh — port autotune.py na czysty shell + awk (bez Pythona). Wynik identyczny bajt w bajt — zweryfikowane na: wymuszonym RAM (11 rozmiarów, też skrajne), autodetekcji host/cgroup (realnie w kontenerze, pod limitami --memory), trybie unsafe, override'ach locków. autotune.py zostaje jako referencja parytetu. Self-test: sh autotune.sh --test.
  • docker-entrypoint-autotune.sh — Python-free, woła autotune.sh, respektuje $PGDATA (stock PG18+ domyślnie używa /var/lib/postgresql/<major>/docker). Działa podmontowany na stockowym postgres.
  • examples/docker-compose.yml — gotowy przykład: stock postgres:18 + bind-mount + ICU pl-PL przez POSTGRES_INITDB_ARGS (bez systemowego locale pl_PL).
  • Usunięto cały pipeline obrazu: Dockerfile, docker-bake.hcl, DOCKERHUB.md oraz zadania build/scan/push/scout/dockerhub w CI. Nowe ci.yml: self-test + pre-commit + smoke na postgres:16/17/18 (sprawdza, że autotune zadziałał i działa polskie sortowanie ICU).
  • Wcześniej na branchu: usunięcie plpython3u; fix generowania locale pl_PL po apt-get upgrade (na Debian trixie upgrade regenerował locale-archive i kasował locale → initdb padał z invalid locale settings).
  • Zaktualizowane README.md / CLAUDE.md / CHANGELOG.md; usunięty hook hadolint z pre-commit.

Świadomy trade-off

Znika systemowy locale pl_PL (komunikaty / formatowanie liczb i dat po polsku). Polskie sortowanie zapewnia ICU niezależnie od locale OS, więc dla BPP to bez znaczenia.

Weryfikacja

  • sh autotune.sh --test oraz python autotune.py --testOK
  • ✅ parytet autotune.sh vs autotune.py — identyczny na wszystkich ścieżkach
  • ✅ uruchomione end-to-end na stockowym postgres:18: brak Pythona w obrazie, shared_buffers skalowane do limitu cgroup (498072kB @ 2 GiB), 'ł' < 'm' COLLATE "pl-x-icu" = t
  • pre-commit (ruff + shellcheck) zielony

🤖 Generated with Claude Code

…postgres

BPP-strojony PostgreSQL uruchamiamy teraz na oficjalnym obrazie `postgres`
przez bind-mount, bez budowania własnego obrazu.

- autotune.py przepisany na czysty shell+awk (autotune.sh, bez Pythona);
  wynik identyczny bajt w bajt — zweryfikowane: wymuszony RAM, autodetekcja
  host/cgroup, tryb unsafe, override locków. autotune.py zostaje jako referencja.
- docker-entrypoint-autotune.sh: Python-free, respektuje $PGDATA — działa
  podmontowany na stockowym postgres.
- examples/docker-compose.yml: gotowy przykład (ICU pl-PL przez
  POSTGRES_INITDB_ARGS, bez systemowego locale pl_PL).
- Usunięto Dockerfile, docker-bake.hcl, DOCKERHUB.md oraz zadania
  build/scan/push/scout/dockerhub w CI. Nowe ci.yml: self-test + pre-commit
  + smoke na postgres:16/17/18.
- Wcześniej na tym branchu: usunięcie plpython3u; fix generowania locale
  pl_PL po apt-get upgrade (Debian trixie regenerował locale-archive i kasował
  locale, przez co initdb padał z "invalid locale settings").
- README/CLAUDE/CHANGELOG zaktualizowane; usunięto hook hadolint z pre-commit.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@mpasternak mpasternak merged commit 345950b into main Jun 13, 2026
5 checks passed
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant