- 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>
44 lines
1.8 KiB
Bash
Executable file
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"
|