Files
global_it24_landing/deploy.sh
DeepAgent 44d6ef1da5 Оптимизация сборки Docker: устранение зависания на yarn install
- Устранена двойная установка зависимостей в Dockerfile
- Добавлены ENV переменные для пропуска ненужных бинарников
- Создан .dockerignore для ускорения копирования файлов
- Обновлены скрипты deploy.sh и update.sh с поддержкой --fast режима
- Добавлена документация BUILD_OPTIMIZATION.md и QUICK_FIX.md

Ожидаемое время сборки с --fast: 10-15 минут (было 30+ минут)
2025-10-27 13:04:00 +00:00

109 lines
4.0 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/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