#!/usr/bin/env bash set -euo pipefail DOCKER_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" ROOT_DIR="$(cd "$DOCKER_DIR/.." && pwd)" ENV_FILE="${ENV_FILE:-$DOCKER_DIR/.env.node-local}" COMPOSE_FILE="$DOCKER_DIR/docker-compose.node-local.yml" resolve_compose_cmd() { if command -v docker >/dev/null 2>&1; then if docker compose version >/dev/null 2>&1; then echo "docker compose" return fi fi if command -v docker-compose >/dev/null 2>&1; then echo "docker-compose" return fi echo "Errore: non trovo né 'docker compose' né 'docker-compose'." >&2 exit 127 } 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 } COMPOSE_CMD="$(resolve_compose_cmd)" if [[ ! -f "$ENV_FILE" ]]; then echo "Env mancante: $ENV_FILE" echo "Crea prima il file: cp $DOCKER_DIR/.env.node-local.example $ENV_FILE" exit 1 fi source "$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 if [[ -n "${LEGACY_ARCHIVES_PATH:-}" ]]; then mkdir -p "$LEGACY_ARCHIVES_PATH" fi mkdir -p "$ROOT_DIR/storage/backups" echo "[1/6] Validazione compose" $COMPOSE_CMD --env-file "$ENV_FILE" -f "$COMPOSE_FILE" config >/tmp/netgescon-node-local.config echo "[2/6] Build immagine applicativa" $COMPOSE_CMD --env-file "$ENV_FILE" -f "$COMPOSE_FILE" build app echo "[3/6] Avvio database e redis" $COMPOSE_CMD --env-file "$ENV_FILE" -f "$COMPOSE_FILE" up -d db redis echo "[4/6] Avvio applicazione e nginx" $COMPOSE_CMD --env-file "$ENV_FILE" -f "$COMPOSE_FILE" up -d app nginx echo "[5/6] Creazione database import legacy" $COMPOSE_CMD --env-file "$ENV_FILE" -f "$COMPOSE_FILE" exec -T db sh -lc \ "mysql -uroot -p\"$DB_ROOT_PASSWORD\" -e \"CREATE DATABASE IF NOT EXISTS gescon_import; GRANT ALL PRIVILEGES ON gescon_import.* TO '$DB_USERNAME'@'%'; FLUSH PRIVILEGES;\"" echo "[6/6] Stato finale" $COMPOSE_CMD --env-file "$ENV_FILE" -f "$COMPOSE_FILE" ps echo echo "Installazione nodo locale completata." echo "URL applicazione: ${APP_URL:-http://localhost:${NODE_HTTP_PORT:-8080}}" echo "Backup/restore: usa docker/restore-node-backup.sh dopo aver copiato dump SQL e archivio storage sulla VM."