87 lines
2.4 KiB
Bash
Executable File
87 lines
2.4 KiB
Bash
Executable File
#!/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 (usuwanie kontenerów)"
|
|
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))"
|