Files
global_it24_landing/QUICK_FIX.md
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

5.3 KiB
Raw Blame History

🚀 Быстрое решение проблемы зависания сборки

Проблема

Сборка зависла на этапе [4/4] Building fresh packages... при yarn install --immutable

Что было исправлено

  1. Устранена двойная установка зависимостей в Dockerfile
  2. Добавлены переменные окружения для пропуска ненужных бинарников
  3. Создан .dockerignore для ускорения копирования файлов
  4. Обновлены скрипты развертывания с поддержкой быстрой сборки

📋 Инструкция по развертыванию

Вариант 1: Первое развертывание (рекомендуется)

cd /home/ubuntu/global_it24_landing

# Остановите текущую сборку (если запущена)
docker compose down
docker builder prune -f

# Запустите развертывание с быстрой сборкой
./deploy.sh --fast

Ожидаемое время: 10-15 минут (вместо 30+ минут)

Вариант 2: Если всё ещё медленно

Если сборка всё равно занимает более 20 минут, увеличьте ресурсы Docker:

# Проверьте текущие лимиты
docker info | grep -i "CPUs\|Memory"

# Для Docker на Ubuntu (редактируйте daemon.json)
sudo nano /etc/docker/daemon.json

Добавьте или измените:

{
  "default-runtime": "runc",
  "builder": {
    "gc": {
      "enabled": true
    }
  }
}

Перезапустите Docker:

sudo systemctl restart docker

Вариант 3: Использование готового образа (самый быстрый)

Если у вас есть доступ к более мощной машине:

На мощной машине:

cd /home/ubuntu/global_it24_landing
docker build -t global-it24:latest .
docker save global-it24:latest | gzip > global-it24-image.tar.gz

Перенесите файл на сервер и загрузите:

scp global-it24-image.tar.gz user@server:/home/ubuntu/
ssh user@server
docker load < /home/ubuntu/global-it24-image.tar.gz
cd /home/ubuntu/global_it24_landing
docker compose up -d

🎯 Рекомендации

Для первого развертывания:

./deploy.sh --fast

Для обновлений кода:

./update.sh --rebuild

Для простого перезапуска (изменения в .env):

./update.sh

⏱️ Ожидаемое время сборки

Метод Время Когда использовать
./deploy.sh 20-30 мин Первое развертывание без кеша
./deploy.sh --fast 10-15 мин Первое развертывание с кешем
./update.sh --rebuild 5-10 мин Обновление кода
./update.sh ~10 сек Изменения .env или перезапуск

Что происходит при сборке

  1. [1/11] Создание базового образа (~30 сек)
  2. [2/11] Установка системных пакетов (~1 мин)
  3. [3/11] Копирование файлов (~10 сек)
  4. [4/11] yarn install (~8-12 мин) ⚠️ Самый долгий этап
  5. [5/11] Сборка Next.js (~2-3 мин)
  6. [6/11] Prisma generate (~30 сек)
  7. [7/11-11/11] Финализация образа (~1 мин)

Нормальное поведение

Это нормально:

  • Множество предупреждений о peer dependencies
  • Долгая компиляция на "Building fresh packages" (8-12 минут)
  • Предупреждения от ESLint, Prettier, Prisma

Это проблема:

  • Сборка зависла более 30 минут без прогресса
  • Ошибки (errors), а не предупреждения (warnings)
  • Выход с кодом ошибки

🔍 Мониторинг прогресса

В отдельном терминале:

# Следите за логами
docker compose logs -f web

# Проверяйте использование ресурсов
docker stats

# Подробные логи сборки
docker compose build --progress=plain

📝 После успешной сборки

# Проверьте статус
./status.sh

# Просмотрите логи
./logs.sh

# Локальная проверка
curl http://localhost:3000

# Настройте Traefik для доступа из интернета

🆘 Если проблема не решена

  1. Проверьте доступные ресурсы:
free -h
df -h
docker system df
  1. Очистите Docker кеш:
docker builder prune -a -f
docker system prune -a -f
  1. Попробуйте пересобрать с нуля:
docker compose down -v
./deploy.sh

Если ничего не помогает, рассмотрите Вариант 3 (сборка на мощной машине).