40 lines
1.4 KiB
Bash
Executable File
40 lines
1.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
ENV_FILE="${ENV_FILE:-$ROOT_DIR/docker/.env.multisite}"
|
|
COMPOSE_FILE="$ROOT_DIR/docker/docker-compose.multisite.yml"
|
|
GIT_REF="${GIT_REF:-main}"
|
|
|
|
if [[ ! -f "$ENV_FILE" ]]; then
|
|
echo "File env non trovato: $ENV_FILE"
|
|
exit 1
|
|
fi
|
|
|
|
echo "[1/6] Backup DB (prod + demo)..."
|
|
source "$ENV_FILE"
|
|
mkdir -p "$ROOT_DIR/storage/backups"
|
|
docker exec netgescon_prod_db sh -lc "mysqldump -u root -p\"$PROD_DB_ROOT_PASSWORD\" \"$PROD_DB_DATABASE\"" > "$ROOT_DIR/storage/backups/prod_$(date +%F_%H%M%S).sql"
|
|
docker exec netgescon_demo_db sh -lc "mysqldump -u root -p\"$DEMO_DB_ROOT_PASSWORD\" \"$DEMO_DB_DATABASE\"" > "$ROOT_DIR/storage/backups/demo_$(date +%F_%H%M%S).sql"
|
|
|
|
echo "[2/6] Update codice..."
|
|
cd "$ROOT_DIR"
|
|
git fetch origin
|
|
git checkout "$GIT_REF"
|
|
git pull --ff-only origin "$GIT_REF"
|
|
|
|
echo "[3/6] Build nuove immagini app..."
|
|
docker compose --env-file "$ENV_FILE" -f "$COMPOSE_FILE" build prod_app demo_app
|
|
|
|
echo "[4/6] Rolling update app/nignx..."
|
|
docker compose --env-file "$ENV_FILE" -f "$COMPOSE_FILE" up -d prod_app prod_nginx demo_app demo_nginx
|
|
|
|
echo "[5/6] Pulizia cache applicativa..."
|
|
docker exec netgescon_prod_app php artisan optimize:clear || true
|
|
docker exec netgescon_demo_app php artisan optimize:clear || true
|
|
|
|
echo "[6/6] Verifica servizi..."
|
|
docker compose --env-file "$ENV_FILE" -f "$COMPOSE_FILE" ps
|
|
|
|
echo "Update completato."
|