site-mariage/scripts/restore.sh
Corentin Joguet b0030246e4 chore: package de deploiement prod (Dockerfile, compose, backup/restore, guide)
- Dockerfile multi-stage (build Astro -> runtime node standalone)
- docker-compose.prod.yml : Astro builde, ports bindes 127.0.0.1, secrets requis
- .env.prod.example : template de prod avec generation des secrets
- scripts/backup.sh + restore.sh : migration base Directus + photos
- DEPLOY.md : guide pas a pas
- .dockerignore : exclusion du .env (anti-fuite de secrets)
- untrack du tool-log BYAN (churn)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-15 11:00:52 +02:00

44 lines
1.8 KiB
Bash
Executable file

#!/usr/bin/env bash
# ============================================================
# restore.sh — restaure TON CONTENU sur le serveur de prod
#
# A lancer SUR LE SERVEUR, apres avoir demarre la stack prod
# (docker compose -f docker-compose.prod.yml up -d) et transfere
# les 2 fichiers de backup dans ./backups/.
#
# Usage :
# bash scripts/restore.sh backups/db-XXXX.sql.gz backups/uploads-XXXX.tar.gz
#
# Conteneurs prod (override si besoin) :
# PG_CONTAINER=... DIRECTUS_CONTAINER=... bash scripts/restore.sh ...
# ============================================================
set -euo pipefail
cd "$(dirname "$0")/.."
DB_DUMP="${1:?Chemin du dump DB requis (ex: backups/db-XXXX.sql.gz)}"
UPLOADS_TAR="${2:?Chemin de l archive uploads requis (ex: backups/uploads-XXXX.tar.gz)}"
if [ -f .env ]; then set -a; . ./.env; set +a; fi
PG_CONTAINER="${PG_CONTAINER:-mostuki-postgres}"
DIRECTUS_CONTAINER="${DIRECTUS_CONTAINER:-mostuki-directus}"
PG_USER="${POSTGRES_USER:-directus}"
PG_DB="${POSTGRES_DB:-directus}"
echo "ATTENTION : ceci ECRASE la base '$PG_DB' et les photos du serveur."
read -r -p "Continuer ? (tape oui) " ans
[ "$ans" = "oui" ] || { echo "Annule."; exit 1; }
echo "==> Restauration base Postgres ($PG_CONTAINER)"
# Recree un schema propre avant import pour eviter les doublons
docker exec -i "$PG_CONTAINER" psql -U "$PG_USER" -d "$PG_DB" \
-c "DROP SCHEMA public CASCADE; CREATE SCHEMA public;"
gunzip -c "$DB_DUMP" | docker exec -i "$PG_CONTAINER" psql -U "$PG_USER" -d "$PG_DB"
echo "==> Restauration des photos (uploads Directus)"
docker exec -i "$DIRECTUS_CONTAINER" sh -c 'rm -rf /directus/uploads/* && tar xzf - -C /directus/uploads' < "$UPLOADS_TAR"
echo ""
echo "OK. Redemarre Directus pour qu'il reprenne la base restauree :"
echo " docker compose -f docker-compose.prod.yml restart directus astro"