#!/usr/bin/env bash # Полная пересборка и перезапуск — решает проблему «старый сайт после git pull» set -euo pipefail ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" cd "${ROOT_DIR}" echo "=== Shop redeploy ===" if [[ -d .git ]]; then git pull origin main || true export APP_VERSION=$(git describe --tags --always 2>/dev/null || git rev-parse --short HEAD) echo "Git: $(git log -1 --oneline)" else export APP_VERSION="manual" fi export BUILD_TIME=$(date -u +%Y-%m-%dT%H:%M:%SZ) echo "Version: ${APP_VERSION}" echo "" echo "Останавливаем app..." docker compose stop app 2>/dev/null || true echo "Пересборка образа (без кэша)..." docker compose build --no-cache app echo "Запуск контейнеров..." docker compose up -d --force-recreate app caddy echo "" echo "Ожидание запуска..." sleep 3 echo "" echo "Проверка версии:" curl -sf "http://127.0.0.1/health" 2>/dev/null || curl -sf "http://localhost/health" || docker compose exec -T app wget -qO- http://127.0.0.1:8080/health echo "" echo "" IP=$(hostname -I | awk '{print $1}') echo "Готово: http://${IP}" echo "Логи: docker compose logs -f app"