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

178 lines
5.3 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 🚀 Быстрое решение проблемы зависания сборки
## Проблема
Сборка зависла на этапе `[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 (сборка на мощной машине).