Initial commit (unpacked platform)
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
#!/usr/bin/env bash
|
||||
# Deploy till befintlig server (spec §51, steg 1).
|
||||
# Körs som den dedikerade app-användaren på servern.
|
||||
set -euo pipefail
|
||||
|
||||
APP_DIR="/opt/${APP_SLUG:-app}-platform"
|
||||
REPO_DIR="$APP_DIR/repo"
|
||||
COMPOSE="$REPO_DIR/infrastructure/docker/docker-compose.production.yml"
|
||||
|
||||
echo "==> Deploy $(date -Iseconds)"
|
||||
|
||||
cd "$REPO_DIR"
|
||||
git fetch --tags origin main
|
||||
PREV_SHA=$(git rev-parse HEAD)
|
||||
git reset --hard origin/main
|
||||
NEW_SHA=$(git rev-parse HEAD)
|
||||
echo "==> $PREV_SHA -> $NEW_SHA"
|
||||
|
||||
echo "==> Bygger images"
|
||||
docker compose -f "$COMPOSE" build
|
||||
|
||||
echo "==> Kör databas-migrationer (med backup-punkt först)"
|
||||
# RDS: automatiska snapshots finns; ta även logisk dump för snabb rollback.
|
||||
mkdir -p "$APP_DIR/backups"
|
||||
pg_dump "$DATABASE_URL" --format=custom \
|
||||
--file="$APP_DIR/backups/pre-deploy-$(date +%Y%m%d-%H%M%S).dump" || {
|
||||
echo "VARNING: pg_dump misslyckades – avbryter deploy (spec §63: ingen migration utan backup)"; exit 1;
|
||||
}
|
||||
docker run --rm --env-file "$APP_DIR/secrets/api.env" app-api:latest \
|
||||
node dist/index.js --migrate-only 2>/dev/null || true
|
||||
# Migrationer körs normalt från CI/lokalt: pnpm db:migrate mot produktion via bastion.
|
||||
|
||||
echo "==> Startar om tjänster (rullande)"
|
||||
docker compose -f "$COMPOSE" up -d app-redis
|
||||
docker compose -f "$COMPOSE" up -d app-worker
|
||||
docker compose -f "$COMPOSE" up -d app-api
|
||||
docker compose -f "$COMPOSE" up -d app-admin
|
||||
|
||||
echo "==> Healthcheck"
|
||||
sleep 5
|
||||
if ! curl -fsS http://127.0.0.1:4100/healthz > /dev/null; then
|
||||
echo "FEL: API svarar inte – rollback till $PREV_SHA"
|
||||
git reset --hard "$PREV_SHA"
|
||||
docker compose -f "$COMPOSE" build app-api
|
||||
docker compose -f "$COMPOSE" up -d app-api
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "==> Deploy klar: $NEW_SHA"
|
||||
Reference in New Issue
Block a user