# 🚀 Быстрое решение проблемы зависания сборки ## Проблема Сборка зависла на этапе `[4/4] Building fresh packages...` при `yarn install --immutable` ## ✅ Что было исправлено 1. **Устранена двойная установка зависимостей** в Dockerfile 2. **Добавлены переменные окружения** для пропуска ненужных бинарников 3. **Создан .dockerignore** для ускорения копирования файлов 4. **Обновлены скрипты развертывания** с поддержкой быстрой сборки ## 📋 Инструкция по развертыванию ### Вариант 1: Первое развертывание (рекомендуется) ```bash cd /home/ubuntu/global_it24_landing # Остановите текущую сборку (если запущена) docker compose down docker builder prune -f # Запустите развертывание с быстрой сборкой ./deploy.sh --fast ``` **Ожидаемое время:** 10-15 минут (вместо 30+ минут) ### Вариант 2: Если всё ещё медленно Если сборка всё равно занимает более 20 минут, увеличьте ресурсы Docker: ```bash # Проверьте текущие лимиты docker info | grep -i "CPUs\|Memory" # Для Docker на Ubuntu (редактируйте daemon.json) sudo nano /etc/docker/daemon.json ``` Добавьте или измените: ```json { "default-runtime": "runc", "builder": { "gc": { "enabled": true } } } ``` Перезапустите Docker: ```bash sudo systemctl restart docker ``` ### Вариант 3: Использование готового образа (самый быстрый) Если у вас есть доступ к более мощной машине: **На мощной машине:** ```bash cd /home/ubuntu/global_it24_landing docker build -t global-it24:latest . docker save global-it24:latest | gzip > global-it24-image.tar.gz ``` **Перенесите файл на сервер и загрузите:** ```bash 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 ``` ## 🎯 Рекомендации ### Для первого развертывания: ```bash ./deploy.sh --fast ``` ### Для обновлений кода: ```bash ./update.sh --rebuild ``` ### Для простого перезапуска (изменения в .env): ```bash ./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) - Выход с кодом ошибки ## 🔍 Мониторинг прогресса В отдельном терминале: ```bash # Следите за логами docker compose logs -f web # Проверяйте использование ресурсов docker stats # Подробные логи сборки docker compose build --progress=plain ``` ## 📝 После успешной сборки ```bash # Проверьте статус ./status.sh # Просмотрите логи ./logs.sh # Локальная проверка curl http://localhost:3000 # Настройте Traefik для доступа из интернета ``` ## 🆘 Если проблема не решена 1. Проверьте доступные ресурсы: ```bash free -h df -h docker system df ``` 2. Очистите Docker кеш: ```bash docker builder prune -a -f docker system prune -a -f ``` 3. Попробуйте пересобрать с нуля: ```bash docker compose down -v ./deploy.sh ``` Если ничего не помогает, рассмотрите Вариант 3 (сборка на мощной машине).