41 lines
2.4 KiB
Markdown
41 lines
2.4 KiB
Markdown
# 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.
|