Upgrade
Purpose
Section titled “Purpose”Upgrade a running deployment to a new image release with minimal disruption.
Overview
Section titled “Overview”Images are published to GHCR on every push to main (tagged latest and an
immutable sha-<commit>). An upgrade pulls new images, runs migrations, and
recreates services. Roll back by pinning the previous sha- tag.
Configuration
Section titled “Configuration”# Pin a specific build for reproducible deploys / rollback:IMAGE_TAG=sha-<commit>Examples
Section titled “Examples”# Pull and apply (note: pull must be paired with up -d --force-recreate)docker compose pulldocker compose up -d --force-recreate
# Roll back to a known-good buildIMAGE_TAG=sha-abc1234 docker compose up -d --force-recreatedocker compose pullalone does not restart services — always follow withup -d --force-recreate, or containers keep running the old image.- Migrations run as a one-shot before app services; confirm it exits 0.