Skip to main content

Upgrade Process

1

Back Up

Back up your database and .env file before upgrading.
# Database backup
docker compose exec db pg_dump -U postgres -Fc ondoki > backup-$(date +%Y%m%d).dump

# Save env
cp .env .env.backup
2

Pull Latest Code

cd ondoki-web
git pull origin master
3

Check for New Environment Variables

Compare your .env with .env.example for any new variables:
diff .env .env.example
Add any new required variables to your .env.
4

Pull or Build New Images

Production (pre-built images):
docker compose -f docker-compose.prod.yml pull
Development (build locally):
docker compose build
5

Run Database Migrations

# Start just the database first
docker compose -f docker-compose.prod.yml up -d db

# Wait for it to be healthy, then run migrations
docker compose -f docker-compose.prod.yml run --rm backend alembic upgrade head
6

Start Updated Services

docker compose -f docker-compose.prod.yml up -d
7

Verify

# Check all services are healthy
docker compose -f docker-compose.prod.yml ps

# Check backend health
curl https://yourdomain.com/api/health

Rolling Back

If something goes wrong:
# Stop services
docker compose -f docker-compose.prod.yml down

# Restore database
docker compose -f docker-compose.prod.yml up -d db
docker compose exec -i db pg_restore -U postgres -d ondoki --clean < backup.dump

# Check out previous version
git checkout <previous-commit>

# Restart with previous images
docker compose -f docker-compose.prod.yml up -d
Alembic migrations may not have downgrade paths for all changes. Test upgrades in a staging environment first when possible.

Checking the Current Version

# Current git commit
git log --oneline -1

# Current database migration
docker compose exec backend alembic current

# Container image versions
docker compose -f docker-compose.prod.yml images