#!/usr/bin/env bash set -euo pipefail # --- Wczytaj zmienne z .env --- if [[ -f .env ]]; then set -a source .env set +a fi APP_PORT="${APP_PORT:-8080}" REPO_DIR="${REPO_DIR:-$(pwd)}" COMPOSE_FILE="${COMPOSE_FILE:-docker-compose.yml}" GIT_REMOTE="${GIT_REMOTE:-origin}" GIT_BRANCH="${GIT_BRANCH:-$(git -C "$REPO_DIR" rev-parse --abbrev-ref HEAD 2>/dev/null || echo main)}" # Domyślny profil PROFILE="${1:-sqlite}" if [[ "$PROFILE" != "pgsql" && "$PROFILE" != "mysql" && "$PROFILE" != "sqlite" ]]; then echo "Użycie: $0 {pgsql|mysql|sqlite}" exit 1 fi SERVICES=() if [[ $# -gt 1 ]]; then SERVICES=("${@:2}") fi log() { printf "\n==> %s\n" "$*"; } command -v git >/dev/null || { echo "Brak 'git' w PATH"; exit 1; } command -v docker >/dev/null || { echo "Brak 'docker' w PATH"; exit 1; } if ! docker compose version >/dev/null 2>&1; then echo "Wymagany jest 'docker compose' (plugin), nie stary 'docker-compose'." exit 1 fi if [[ ! -f "$REPO_DIR/$COMPOSE_FILE" ]]; then if [[ -f "$REPO_DIR/compose.yaml" ]]; then COMPOSE_FILE="compose.yaml" else echo "Nie znaleziono pliku Compose w: $REPO_DIR/$COMPOSE_FILE" exit 1 fi fi cd "$REPO_DIR" log "Aktualizacja repo: git pull --ff-only ($GIT_REMOTE/$GIT_BRANCH)" git fetch --prune "$GIT_REMOTE" git checkout "$GIT_BRANCH" >/dev/null 2>&1 || true git pull --ff-only "$GIT_REMOTE" "$GIT_BRANCH" log "Zapisywanie hasha commita do version.txt" git rev-parse --short HEAD > version.txt log "Docker Compose DOWN" docker compose --profile "$PROFILE" stop log "Generowanie default.vcl z APP_PORT=$APP_PORT" envsubst < deploy/varnish/default.vcl.template > deploy/varnish/default.vcl # Tworzenie katalogów danych dla baz jeśli brak if [[ "$PROFILE" == "pgsql" ]]; then if [[ ! -d "./db/pgsql" ]]; then log "Tworzę katalog ./db/pgsql dla danych PostgreSQL" mkdir -p ./db/pgsql fi elif [[ "$PROFILE" == "mysql" ]]; then if [[ ! -d "./db/mysql" ]]; then log "Tworzę katalog ./db/mysql dla danych MySQL" mkdir -p ./db/mysql fi fi log "Docker Compose UP (build bez deps) dla profilu: $PROFILE i serwisów: ${SERVICES[*]:-(wszystkie)}" if [[ ${#SERVICES[@]} -gt 0 ]]; then DB_ENGINE="$PROFILE" docker compose -f "$COMPOSE_FILE" --profile "$PROFILE" up -d --no-deps --build "${SERVICES[@]}" else DB_ENGINE="$PROFILE" docker compose -f "$COMPOSE_FILE" --profile "$PROFILE" up -d --no-deps --build fi log "Gotowe ✅ (wersja: $(cat version.txt))"