2.4 KiB
Gecontroleerde migratie van legacy deployments
docker-compose.migration.yml is een optionele operatoroverride, geen wijziging
aan de standaarddeployment. Gebruik deze alleen na de expliciete migratieprocedure
in ProjectBrain scripts/legacy-deployment-migration/.
De operator valideert de exacte Git-revisie en imageprovenance, stopt de oude
container en maakt een gecontroleerde koude kopie van de volledige local-map.
MIGRATION_LOCAL_ROOT verwijst uitsluitend naar die kopie. Media, logs en de
PostgreSQL-data houden hun geneste mountrelatie. De originele data, image en
container blijven bewaard voor rollback; startupmigraties mogen ze niet wijzigen.
Alle migratievariabelen zijn verplicht, paden worden niet automatisch aangemaakt, en een attemptlabel bindt de nieuwe container aan precies één hersteltransactie. De operator controleert gemergde Compose-mounts, gezondheid, HTTP en de echte brokerreceipt voordat de configuratie definitief wordt overgezet.
De override is offline getest met echte Compose-rendering en ontbrekende invoervariabelen. Toevoeging van dit bestand bewijst geen uitgevoerde productiemigratie.
Outbound worker hold
Before starting a migration candidate, create .migration-worker-hold in its
cloned /app/local directory. The supervised Celery worker and scheduler wait
without consuming tasks until the operator removes that exact attempt-owned
file after the deployment commit. Normal startup is unchanged when it is absent.
Do not put the marker into the original data. This is a startup gate, not a
control for pausing an already-running worker. Recovery before commit retains
the hold and candidate data; recovery after commit resumes activation and must
never revert to stale original data after outbound work has been released.
The first Django middleware also returns 503 (no-store) for every ordinary
request while held, including GET requests. Only exact GET/HEAD requests to
/health/ready/ and /health/live/ pass. Marker inspection errors fail closed.
The migration helper creates a nonce-bound marker only in the cold clone and
removes it with directory fsync after a durable committed journal. Recovery
after that boundary may resume activation but can never restore old data.
MIGRATION_NETWORK is required and must equal the inspected existing
vacatureradar_default network. The managed Compose project does not move the
application to a newly-created network.