65 lines
1.8 KiB
Bash
Executable File
65 lines
1.8 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"
|
|
|
|
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."
|