- Устранена двойная установка зависимостей в Dockerfile - Добавлены ENV переменные для пропуска ненужных бинарников - Создан .dockerignore для ускорения копирования файлов - Обновлены скрипты deploy.sh и update.sh с поддержкой --fast режима - Добавлена документация BUILD_OPTIMIZATION.md и QUICK_FIX.md Ожидаемое время сборки с --fast: 10-15 минут (было 30+ минут)
5.3 KiB
5.3 KiB
🚀 Быстрое решение проблемы зависания сборки
Проблема
Сборка зависла на этапе [4/4] Building fresh packages... при yarn install --immutable
✅ Что было исправлено
- Устранена двойная установка зависимостей в Dockerfile
- Добавлены переменные окружения для пропуска ненужных бинарников
- Создан .dockerignore для ускорения копирования файлов
- Обновлены скрипты развертывания с поддержкой быстрой сборки
📋 Инструкция по развертыванию
Вариант 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/11] Создание базового образа (~30 сек)
- [2/11] Установка системных пакетов (~1 мин)
- [3/11] Копирование файлов (~10 сек)
- [4/11] yarn install (~8-12 мин) ⚠️ Самый долгий этап
- [5/11] Сборка Next.js (~2-3 мин)
- [6/11] Prisma generate (~30 сек)
- [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 для доступа из интернета
🆘 Если проблема не решена
- Проверьте доступные ресурсы:
free -h
df -h
docker system df
- Очистите Docker кеш:
docker builder prune -a -f
docker system prune -a -f
- Попробуйте пересобрать с нуля:
docker compose down -v
./deploy.sh
Если ничего не помогает, рассмотрите Вариант 3 (сборка на мощной машине).