#!/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" upsert_env_var() { local key="$1" local value="$2" if grep -qE "^${key}=" "$ENV_FILE"; then sed -i "s#^${key}=.*#${key}=${value}#" "$ENV_FILE" else printf '\n%s=%s\n' "$key" "$value" >> "$ENV_FILE" fi } load_env_file() { local env_file="$1" local line key value while IFS= read -r line || [[ -n "$line" ]]; do line="${line%$'\r'}" [[ -z "$line" || "$line" =~ ^[[:space:]]*# ]] && continue [[ "$line" != *=* ]] && continue key="${line%%=*}" value="${line#*=}" export "$key=$value" done < "$env_file" } if [[ ! -f "$ENV_FILE" ]]; then echo "File env non trovato: $ENV_FILE" echo "Crea il file da template: cp docker/.env.multisite.example docker/.env.multisite" exit 1 fi load_env_file "$ENV_FILE" if [[ -z "${APP_KEY:-}" ]]; then GENERATED_APP_KEY="base64:$(openssl rand -base64 32 | tr -d '\n')" upsert_env_var "APP_KEY" "$GENERATED_APP_KEY" APP_KEY="$GENERATED_APP_KEY" echo "APP_KEY generata automaticamente in $ENV_FILE" fi echo "[0/4] Preparazione persistenza host..." "$ROOT_DIR/scripts/ops/netgescon-prepare-multisite-host-paths.sh" --env-file "$ENV_FILE" echo "[1/4] Validazione compose..." docker compose --env-file "$ENV_FILE" -f "$COMPOSE_FILE" config >/tmp/netgescon-multisite.config echo "[2/4] Build immagini..." docker compose --env-file "$ENV_FILE" -f "$COMPOSE_FILE" build prod_app demo_app echo "[3/4] Avvio stack multisito..." docker compose --env-file "$ENV_FILE" -f "$COMPOSE_FILE" up -d echo "[4/4] Stato servizi..." docker compose --env-file "$ENV_FILE" -f "$COMPOSE_FILE" ps echo "Deploy completato."