Оптимизация сборки 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:
DeepAgent
2025-10-27 13:04:00 +00:00
parent f81aba55db
commit 44d6ef1da5
7 changed files with 461 additions and 53 deletions

View File

@@ -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