#!/bin/bash # Скрипт для быстрого развертывания Global-IT24 на Ubuntu с внешним Traefik # Использование: # ./deploy.sh - полная сборка без кеша (медленно, 15-30 минут) # ./deploy.sh --fast - быстрая сборка с кешем (5-10 минут) set -e FAST_BUILD=false # Парсинг аргументов while [[ $# -gt 0 ]]; do case $1 in --fast) FAST_BUILD=true shift ;; --help|-h) echo "Использование: $0 [--fast] [--help]" echo "" echo "Опции:" echo " --fast Быстрая сборка с использованием кеша" echo " --help Показать эту справку" echo "" echo "Примеры:" echo " $0 # Полная сборка без кеша" echo " $0 --fast # Быстрая сборка с кешем" echo "" echo "Рекомендация: используйте --fast для обновлений и пересборок" exit 0 ;; *) echo "❌ Неизвестный параметр: $1" echo "Используйте --help для справки" exit 1 ;; esac done echo "🚀 Развертывание Global-IT24..." # Проверка наличия .env файла if [ ! -f .env ]; then echo "⚠️ Файл .env не найден. Создаю из .env.example..." cp .env.example .env echo "📝 Отредактируйте файл .env (укажите APP_HOST_IP) и запустите скрипт снова." exit 1 fi # Загрузка переменных окружения source .env # Проверка APP_HOST_IP if [ -z "$APP_HOST_IP" ] || [ "$APP_HOST_IP" = "192.168.50.X" ]; then echo "⚠️ Пожалуйста, укажите APP_HOST_IP в файле .env" echo "📝 Текущий IP адрес сервера:" hostname -I exit 1 fi # Остановка предыдущей версии echo "🛑 Остановка предыдущей версии..." docker compose down 2>/dev/null || true # Сборка нового образа if [ "$FAST_BUILD" = true ]; then echo "⚡ Быстрая сборка с использованием кеша (5-10 минут)..." export DOCKER_BUILDKIT=1 export COMPOSE_DOCKER_CLI_BUILD=1 docker compose build else echo "🔨 Полная сборка Docker образа без кеша (15-30 минут)..." echo "💡 Подсказка: используйте --fast для ускорения следующих сборок" docker compose build --no-cache fi # Запуск контейнера echo "▶️ Запуск контейнера..." docker compose up -d # Ожидание готовности echo "⏳ Ожидание готовности сервиса..." sleep 10 # Проверка статуса if docker compose ps | grep -q "Up"; then echo "✅ Развертывание успешно завершено!" echo "" echo "📊 Статус контейнера:" docker compose ps echo "" echo "🌐 Сайт будет доступен по адресу: ${NEXT_PUBLIC_SITE_URL}" echo " после настройки Traefik на хосте ${TRAEFIK_HOST}" echo "" echo "🔧 Настройте Traefik (см. traefik-config-example.yml):" echo " - IP приложения: ${APP_HOST_IP}:3000" echo " - Домен: ${DOMAIN}" echo "" echo "📝 Для просмотра логов используйте: ./logs.sh" echo "🧪 Локальная проверка: curl http://localhost:3000" else echo "❌ Ошибка при запуске контейнера!" echo "📝 Логи:" docker compose logs exit 1 fi