#!/bin/bash # Скрипт для обновления приложения # Использование: # ./update.sh - просто перезапуск (без пересборки) # ./update.sh --rebuild - пересборка с кешем и перезапуск (5-10 минут) set -e REBUILD=false # Парсинг аргументов while [[ $# -gt 0 ]]; do case $1 in --rebuild|-r) REBUILD=true shift ;; --help|-h) echo "Использование: $0 [--rebuild] [--help]" echo "" echo "Опции:" echo " --rebuild, -r Пересобрать образ перед перезапуском" echo " --help, -h Показать эту справку" echo "" echo "Примеры:" echo " $0 # Просто перезапустить (быстро)" echo " $0 --rebuild # Пересобрать и перезапустить" echo "" echo "Когда использовать --rebuild:" echo " - Изменился код приложения" echo " - Обновились зависимости (package.json)" echo " - Изменилась конфигурация Next.js" echo "" echo "Когда НЕ нужен --rebuild:" echo " - Изменились только переменные в .env" echo " - Нужно применить миграции базы данных" exit 0 ;; *) echo "❌ Неизвестный параметр: $1" echo "Используйте --help для справки" exit 1 ;; esac done echo "🔄 Обновление Global-IT24..." if [ "$REBUILD" = true ]; then echo "🔨 Пересборка образа с использованием кеша (5-10 минут)..." export DOCKER_BUILDKIT=1 export COMPOSE_DOCKER_CLI_BUILD=1 # Остановка контейнера docker compose down # Пересборка docker compose build # Запуск docker compose up -d else echo "🔄 Перезапуск контейнера без пересборки..." docker compose restart fi echo "⏳ Ожидание готовности..." sleep 5 if docker compose ps | grep -q "Up"; then echo "✅ Обновление завершено!" docker compose ps echo "" echo "📝 Полезные команды:" echo " Просмотр логов: ./logs.sh" echo " Статус: ./status.sh" echo " С пересборкой: ./update.sh --rebuild" else echo "❌ Ошибка при перезапуске!" docker compose logs --tail=50 exit 1 fi