feat: add migration support for VPS deployment with backup functionality

This commit is contained in:
syntaxbullet
2026-07-09 16:06:02 +02:00
parent 1216a37049
commit d6f8f55c09
4 changed files with 86 additions and 1 deletions

36
scripts/vps-migrate.sh Executable file
View File

@@ -0,0 +1,36 @@
#!/usr/bin/env bash
set -euo pipefail
SSH_USER="${SSH_USER:-syntaxbullet}"
VPS_HOST="${VPS_HOST:-srv1.bayerischer-mittelstandspreis.de}"
VPS_PORT="${VPS_PORT:-22}"
SSH_KEY="${SSH_KEY:-$HOME/.ssh/bmp-vps-deploy}"
APP_ROOT="${APP_ROOT:-/var/www/bmp-website}"
APP_DOMAIN="${APP_DOMAIN:-srv1.bayerischer-mittelstandspreis.de}"
SSH_TARGET="$SSH_USER@$VPS_HOST"
COMPOSE_FILE="$APP_ROOT/current/deploy/vps/docker-compose.yml"
ssh -i "$SSH_KEY" -p "$VPS_PORT" "$SSH_TARGET" "
set -e
cd '$APP_ROOT'
backup_dir='$APP_ROOT/backups'
backup_file=\"\$backup_dir/content-\$(date +%Y%m%d-%H%M%S)-pre-migrate.db\"
sudo install -d -o '$SSH_USER' -g '$SSH_USER' \"\$backup_dir\"
restart_app() {
APP_ROOT='$APP_ROOT' APP_DOMAIN='$APP_DOMAIN' sudo docker compose -f '$COMPOSE_FILE' up -d app >/dev/null
}
trap restart_app EXIT
APP_ROOT='$APP_ROOT' APP_DOMAIN='$APP_DOMAIN' sudo docker compose -f '$COMPOSE_FILE' stop app >/dev/null
cp -p '$APP_ROOT/shared/content.db' \"\$backup_file\"
echo \"Created pre-migration backup: \$backup_file\"
APP_ROOT='$APP_ROOT' APP_DOMAIN='$APP_DOMAIN' sudo docker compose -f '$COMPOSE_FILE' run --rm --no-deps app pnpm payload migrate
restart_app
trap - EXIT
sudo docker ps --format 'table {{.Names}}\t{{.Image}}\t{{.Status}}\t{{.Ports}}'
"