push changes

This commit is contained in:
Mateusz Gruszczyński
2026-03-20 09:14:00 +01:00
parent ab411ba67c
commit 2a59c4bf3e
7 changed files with 148 additions and 27 deletions

View File

@@ -1,9 +1,18 @@
#!/usr/bin/env sh
set -eu
DB_TARGET="${1:-sqlite}"
STACK_NAME="${STACK_NAME:-ksef_app}"
COMPOSE_FILE="${COMPOSE_FILE:-docker-compose.yml}"
SSL_DIR="${SSL_DIR:-./deploy/caddy/ssl}"
if [ -f .env ]; then
set -a
. ./.env
set +a
fi
APP_DOMAIN="${APP_DOMAIN:-localhost}"
CERT_FILE="${CERT_FILE:-${SSL_DIR}/server.crt}"
KEY_FILE="${KEY_FILE:-${SSL_DIR}/server.key}"
@@ -24,6 +33,38 @@ need_cmd openssl
mkdir -p "$SSL_DIR"
case "$DB_TARGET" in
sqlite)
export DB_ENGINE=sqlite
export DB_HOST=""
export DB_PORT=""
COMPOSE_PROFILES=""
mkdir -p ./db/sqlite
DB_PATH_INFO="./db/sqlite/app.db"
;;
pgsql|postgres|postgresql)
export DB_ENGINE=pgsql
export DB_HOST="${DB_HOST:-postgres}"
export DB_PORT="${DB_PORT:-5432}"
COMPOSE_PROFILES="pgsql"
mkdir -p ./db/pgsql
DB_PATH_INFO="./db/pgsql"
;;
mysql)
export DB_ENGINE=mysql
export DB_HOST="${DB_HOST:-mysql}"
export DB_PORT="${DB_PORT:-3306}"
COMPOSE_PROFILES="mysql"
mkdir -p ./db/mysql
DB_PATH_INFO="./db/mysql"
;;
*)
printf 'Nieznany typ bazy: %s\n' "$DB_TARGET" >&2
printf 'Użycie: ./deploy_docker.sh [sqlite|pgsql|mysql]\n' >&2
exit 1
;;
esac
if [ ! -f "$CERT_FILE" ] || [ ! -f "$KEY_FILE" ]; then
log "Nie znaleziono certyfikatu SSL w katalogu ${SSL_DIR}, tworzę self-signed cert..."
rm -f "$CERT_FILE" "$KEY_FILE"
@@ -38,22 +79,31 @@ else
log "Znaleziono istniejący certyfikat SSL w katalogu ${SSL_DIR}."
fi
log "Pobieram najnowsze obrazy bazowe..."
docker compose -f "$COMPOSE_FILE" pull
log "Wybrany silnik bazy: ${DB_ENGINE}"
log "Buduję obraz bez cache..."
docker compose -f "$COMPOSE_FILE" build --no-cache
if [ -n "$COMPOSE_PROFILES" ]; then
export COMPOSE_PROFILES
log "Aktywne profile Compose: ${COMPOSE_PROFILES}"
else
unset COMPOSE_PROFILES || true
log "Brak aktywnych profili Compose"
fi
log "Zatrzymuję aktualny stack..."
log "Pobieram najnowsze obrazy dla bieżącego stacka..."
docker compose -p "$STACK_NAME" -f "$COMPOSE_FILE" pull
log "Zatrzymuję aktualny stack projektu ${STACK_NAME}..."
docker compose -p "$STACK_NAME" -f "$COMPOSE_FILE" stop || true
log "Usuwam osierocone kontenery i stare nieużywane obrazy..."
log "Usuwam kontenery i osierocone zasoby tylko dla projektu ${STACK_NAME}..."
docker compose -p "$STACK_NAME" -f "$COMPOSE_FILE" down --remove-orphans || true
docker image prune -af || true
docker builder prune -af || true
authoritative_stack="${STACK_NAME}"
log "Uruchamiam stack ${authoritative_stack}..."
log "Buduję obrazy projektu ${STACK_NAME} bez cache..."
docker compose -p "$STACK_NAME" -f "$COMPOSE_FILE" build --no-cache
log "Uruchamiam stack ${STACK_NAME}..."
docker compose -p "$STACK_NAME" -f "$COMPOSE_FILE" up -d
log "Deployment zakończony. Aplikacja powinna być dostępna pod https://${APP_DOMAIN}"
log "Silnik bazy: ${DB_ENGINE}"
log "Ścieżka danych bazy: ${DB_PATH_INFO}"