65 lines
1.7 KiB
Markdown
65 lines
1.7 KiB
Markdown
# 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.
|