- Устранена двойная установка зависимостей в Dockerfile - Добавлены ENV переменные для пропуска ненужных бинарников - Создан .dockerignore для ускорения копирования файлов - Обновлены скрипты deploy.sh и update.sh с поддержкой --fast режима - Добавлена документация BUILD_OPTIMIZATION.md и QUICK_FIX.md Ожидаемое время сборки с --fast: 10-15 минут (было 30+ минут)
109 lines
4.0 KiB
Bash
Executable File
109 lines
4.0 KiB
Bash
Executable File
|
||
#!/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
|