← EP21 Internal Docs EP21 Backup Engine
ADR · ADR-0007 · v1.0.0

Docker Packaging — EP21 VM Backup Engine

accepted v1.0.0 Authors: david.sorf Created: 2026-02-24 Updated: 2026-04-09
docker packaging deployment golden-image entrypoint
Backup engine je distribuován jako Docker image obsahující všechny runtime závislosti. Deployment model je jeden kontejner per VM, spravovaný přes standardizovaný entrypoint s command routing. Image je součástí EP21 VM golden image.
Related docs:

Kontext

Backup engine závisí na řadě nástrojů: psql, pg_dump, jq, python3, docker CLI, restic, shasum. Ruční instalace těchto závislostí na každém VM je:

Zvažované alternativy:

A) Bash skript + apt/yum instalace závislostí — runtime drift, složitá správa verzí

B) Ansible/Chef provisioning — vyžaduje CM infrastrukturu, overkill pro tento scope

C) Docker image (zvoleno) — hermetické prostředí, konzistentní napříč VM, jednoduché nasazení

Rozhodnutí

✓ Chosen: C — Docker image s command routing entrypointem, jeden kontejner per VM

Image obsah (Dockerfile):

  • Base: debian:bookworm-slim
  • Nástroje: postgresql-client (psql, pg_dump), jq, python3, restic, perl (shasum)
  • Docker CLI: multi-stage import pro Docker-in-Docker source detection
  • Všechny project skripty bundlované v /opt/ep21-backup/

Entrypoint command routing (docker-entrypoint.sh):

  • daily — spustí kompletní orchestraci (db_bkup_daily.sh)
  • backup — pouze primary vrstva
  • report / retention-report / storage-report — reporting
  • restic-posthook — restic snapshot + retention
  • prune-local — prune lokálních dumpů
  • cron-daemon — startuje interní cron dle DAILY_CRON env
  • shell — interaktivní debug přístup

Deployment: kontejner startuje automaticky při startu VM (systemd unit nebo Docker Compose restart: always). Je součástí EP21 golden image — viz ADR-0002 § agent deployment model.

Důsledky

Pozitivní:

Negativní:

Follow-up (TBD):

Changelog

VersionDateAuthorNote
1.0.02026-04-09david.sorf + claude-sonnet-4-6

Migrace z doc/ADR/ADR-0007-docker-packaging.md do DAK JSON formátu. Rozšířeno o alternativy A/B/C, kompletní Dockerfile obsah, entrypoint command tabulku a follow-up items.