# TurfTracking 1.26.1 Upgrade ## Scope Release `1.26.1` includes schema migrations through `V22__add_email_tokens_and_notification_log.sql`. ## Preserve the production database - Do **not** run `docker compose down -v` - Do **not** delete the Postgres volume - Keep the existing `postgres_data` volume attached to the `db` service ## Recommended upgrade order 1. Back up the production database 2. Load the release images on the production host 3. Run Flyway migrations against the existing database 4. Restart backend and frontend 5. Verify health and application login ## 1. Back up the database Example: ```bash docker compose exec -T db pg_dump -U "$DB_USER" -d "$DB_NAME" > turftracker-pre-1.26.1.sql ``` ## 2. Load the release images Example: ```bash docker load -i turftracking-backend-1.26.1.tar.gz docker load -i turftracking-frontend-1.26.1.tar.gz ``` ## 3. Run migrations Use the production compose file and the existing database volume: ```bash RELEASE_VERSION=1.26.1 docker compose --profile migrate run --rm flyway ``` If the production database has never had Flyway metadata before, `FLYWAY_BASELINE_ON_MIGRATE=true` is already enabled in `docker-compose.yml`, so Flyway will baseline and then apply versioned migrations. ## 4. Restart application services ```bash RELEASE_VERSION=1.26.1 docker compose up -d backend frontend ``` ## 5. Verify ```bash docker compose ps docker compose logs --tail=200 backend curl -f https://turftracker.kaspers.us/health || true ``` ## Rollback note Application containers can be rolled back by loading older images and restarting services, but schema changes are forward-only. That is why the database backup is mandatory before applying migrations.