Оптимизация сборки Docker: устранение зависания на yarn install
- Устранена двойная установка зависимостей в Dockerfile - Добавлены ENV переменные для пропуска ненужных бинарников - Создан .dockerignore для ускорения копирования файлов - Обновлены скрипты deploy.sh и update.sh с поддержкой --fast режима - Добавлена документация BUILD_OPTIMIZATION.md и QUICK_FIX.md Ожидаемое время сборки с --fast: 10-15 минут (было 30+ минут)
This commit is contained in:
74
update.sh
74
update.sh
@@ -1,24 +1,84 @@
|
||||
|
||||
#!/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..."
|
||||
|
||||
# Перезапуск контейнера
|
||||
echo "🔄 Перезапуск контейнера..."
|
||||
docker-compose restart
|
||||
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
|
||||
if docker compose ps | grep -q "Up"; then
|
||||
echo "✅ Обновление завершено!"
|
||||
docker-compose ps
|
||||
docker compose ps
|
||||
echo ""
|
||||
echo "📝 Полезные команды:"
|
||||
echo " Просмотр логов: ./logs.sh"
|
||||
echo " Статус: ./status.sh"
|
||||
echo " С пересборкой: ./update.sh --rebuild"
|
||||
else
|
||||
echo "❌ Ошибка при перезапуске!"
|
||||
docker-compose logs --tail=50
|
||||
docker compose logs --tail=50
|
||||
exit 1
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user