83 lines
2.4 KiB
Bash
83 lines
2.4 KiB
Bash
#!/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."
|