Документация: радикальное решение v4 и обновленная сводка

This commit is contained in:
DeepAgent
2025-10-28 09:05:39 +00:00
parent b55e0d0044
commit 23ce1b3e58
2 changed files with 360 additions and 157 deletions

View File

@@ -1,185 +1,130 @@
═══════════════════════════════════════════════════════════════════
ИСПРАВЛЕНИЕ СБОРКИ DOCKER: Два критичных бага
═══════════════════════════════════════════════════════════════════
ПРОБЛЕМА #1: Сборка зависала на 16+ часов
-------------------------------------------
==============================================
ИТОГОВАЯ СВОДКА: История оптимизации сборки
==============================================
ПРОБЛЕМА #1: Зависание на 16+ часов
------------------------------------
Симптомы:
• Сборка зависала на этапе [4/4] Building fresh packages...
Происходило на двух разных серверах
• Процесс yarn install не завершался
- yarn install зависал на компиляции нативных модулей
- Процесс не завершался даже после 16 часов
Причина:
• Yarn компилировал нативные C++/Rust модули
Процесс занимал вечность или зависал
Попытка исправления #1: --ignore-scripts
✅ Результат: Установка ускорилась до 3-5 минут
Проблема: Нет бинарных движков для Prisma
Решение:
• Добавлен флаг --ignore-scripts к yarn install
• Пропускает компиляцию нативных модулей
• Prisma Client генерируется отдельной командой
Результат:
• Было: 16+ часов
• Стало: 3-5 минут
• Ускорение в 100-200 раз! ⚡
ПРОБЛЕМА #2: Ошибка Prisma Client после исправления #1
--------------------------------------------------------
ПРОБЛЕМА #2: Ошибка Prisma Client
----------------------------------
Симптомы:
Type error: Module '@prisma/client' has no exported member 'PrismaClient'
• Ошибка появлялась при сборке Next.js (yarn build)
Type error: Module '"@prisma/client"' has no exported member 'PrismaClient'
Причина:
• После генерации Prisma Client мы переустанавливали зависимости
• Команда: yarn install --production --ignore-scripts
• Это затирало сгенерированный Prisma Client
Попытка исправления #2: Трехшаговая установка
Шаги:
1. yarn add prisma (с postinstall)
2. npx prisma generate
3. yarn install --ignore-scripts (для остальных пакетов)
Решение:
• Убрали переустановку production зависимостей
• Оставляем все зависимости в упрощенной версии
• Добавлена проверка генерации Prisma Client
❌ Результат: Шаг 3 переустанавливает @prisma/client из кэша,
стирая сгенерированные файлы
Результат:
• Prisma Client корректно генерируется и сохраняется
• TypeScript видит все экспорты из @prisma/client
• Сборка завершается успешно
ИТОГОВОЕ ВРЕМЯ СБОРКИ
----------------------
┌─────────────────────────────┬─────────────┬──────────────┐
│ ЭТАП │ БЫЛО │ СТАЛО │
├─────────────────────────────┼─────────────┼──────────────┤
│ Установка зависимостей │ 16+ часов │ 3-5 минут │
│ Генерация Prisma Client │ N/A │ 1-2 минуты │
│ Сборка Next.js │ N/A │ 3-5 минут │
│ ИТОГО │ 16+ часов │ 8-12 минут │
└─────────────────────────────┴─────────────┴──────────────┘
Попытка исправления #3: Обратный порядок
Шаги:
1. yarn install --ignore-scripts (ВСЕ пакеты)
2. yarn add prisma (С postinstall)
3. npx prisma generate
ПРИМЕНЕНИЕ ИСПРАВЛЕНИЙ
-----------------------
❌ Результат: TypeScript все равно не видит экспорты
Шаг 1: Получите обновления
cd /home/ubuntu/global_it24_landing
git pull origin master
Шаг 2: Очистите Docker кеш (ВАЖНО!)
docker system prune -a
⚠️ Это удалит старые образы и кеш сборки
Нажмите 'y' для подтверждения
ФИНАЛЬНОЕ РЕШЕНИЕ #4: Обычная установка с ENV
----------------------------------------------
Концепция:
- Отказываемся от --ignore-scripts
- Устанавливаем ВСЕ зависимости с postinstall
- Используем переменные окружения для отключения компиляции
Шаг 3: Запустите быструю сборку
./deploy-simple.sh
Код:
```dockerfile
ENV SKIP_SASS_BINARY_DOWNLOAD_FOR_CI=true
ENV CYPRESS_INSTALL_BINARY=0
ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true
ENV npm_config_build_from_source=false
ENV SHARP_IGNORE_GLOBAL_LIBVIPS=1
ENV CANVAS_SKIP_INSTALL=1
Шаг 4: Ждите 8-12 минут
RUN yarn install --network-timeout 300000 --network-concurrency 4
RUN npx prisma generate --schema=./prisma/schema.prisma
```
Шаг 5: Проверьте результат
./status.sh
./logs.sh
curl http://localhost:3000
Ожидаемое время: 13-15 минут
Статус: ⏳ ТЕСТИРУЕТСЯ
ИЗМЕНЕННЫЕ ФАЙЛЫ
-----------------
1. Dockerfile - добавлен --ignore-scripts
2. Dockerfile.simple - добавлен --ignore-scripts
- убрана переустановка production deps
- добавлена проверка Prisma Client
3. QUICK_FIX.md - инструкция по исправлению зависания
4. FIX_PRISMA.md - инструкция по исправлению Prisma
5. SUMMARY.txt - этот файл
ПРОВЕРКА ПОСЛЕ СБОРКИ
----------------------
✅ Контейнеры запущены:
docker ps
Должны быть:
- global_it24_web (порт 3000)
- global_it24_db (PostgreSQL)
СРАВНЕНИЕ ВСЕХ ПОДХОДОВ
------------------------
1. Обычный install → 16+ часов ⛔ Слишком долго
2. --ignore-scripts → 3-5 минут ⛔ Нет движков Prisma
3. Prisma first → 8-12 минут ⛔ Стирается генерация
4. install → Prisma → 8-12 минут ⛔ TypeScript не видит
5. ENV + обычный install → 13-15 минут ⏳ ТЕСТИРУЕМ
✅ Логи без ошибок:
./logs.sh
Не должно быть:
- PrismaClient errors
- Module not found errors
✅ Приложение отвечает:
curl http://localhost:3000
Должен вернуть: HTML код страницы
БЫСТРЫЙ СТАРТ
-------------
cd /home/ubuntu/global_it24_landing
git pull origin master
docker system prune -a # Нажмите 'y'
./deploy-simple.sh
ГАРАНТИЯ
--------
При соблюдении инструкций сборка завершится за 8-12 минут.
Минимальные требования:
• RAM: 2GB (проверьте: free -h)
• Диск: 5GB (проверьте: df -h)
• Интернет: стабильное соединение
ДОКУМЕНТАЦИЯ
------------
BUILD_OPTIMIZATION.md - полная история оптимизации
RADICAL_FIX.md - текущее решение (v4)
FIX_PRISMA.md - детали проблемы Prisma
QUICK_FIX.md - первое исправление зависания
DATABASE.md - работа с PostgreSQL
README.deployment.md - инструкции по развертыванию
TROUBLESHOOTING
---------------
❌ Ошибка "network traefik-public not found"
Решение:
docker network create traefik-public
./deploy-simple.sh
❌ Ошибка "port 3000 already in use"
Решение:
docker compose down
./deploy-simple.sh
❌ Сборка все еще долгая (>20 минут)
Проверьте версию:
git log --oneline -1
Должно быть: "Исправлена генерация Prisma Client..."
Если нет:
git fetch origin
git reset --hard origin/master
docker system prune -a
./deploy-simple.sh
❌ Ошибка Prisma Client not generated
Проверьте наличие schema.prisma:
ls -la /home/ubuntu/global_it24_landing/nextjs_space/prisma/
Должен быть файл: schema.prisma
ЧТО ДАЛЬШЕ
----------
1. Настройте .env файл (если еще не создан)
См. README.md для списка переменных
2. Настройте Traefik (если используете)
См. traefik-config-example.yml
3. Проверьте работу формы обратной связи
- Откройте сайт в браузере
- Заполните форму
- Проверьте уведомления (email/Telegram)
ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ
--------------------------
• Подробно о исправлении зависания: QUICK_FIX.md
• Подробно о Prisma Client: FIX_PRISMA.md
• Обновление из Git: UPDATE_FROM_GIT.md
• Работа с БД: DATABASE.md
• Оптимизация сборки: BUILD_OPTIMIZATION.md
РЕПОЗИТОРИЙ
-----------
git.mscsrv.ru/sa/global_it24_landing.git
Ветка: master
Последние коммиты:
- Исправлена генерация Prisma Client
- КРИТИЧНО: Добавлен --ignore-scripts
═══════════════════════════════════════════════════════════════════
Все изменения зафиксированы и готовы к использованию
═══════════════════════════════════════════════════════════════════
Последний коммит:
"РАДИКАЛЬНО: обычный yarn install с агрессивными ENV для отключения компиляции"
TROUBLESHOOTING
---------------
1. Зависает на "Building fresh packages" > 5 минут
→ Ctrl+C и сообщите мне
2. Ошибка "Prisma Client not found"
→ Проверьте: ls -la nextjs_space/prisma/schema.prisma
3. Ошибка TypeScript
→ Пришлите полный вывод "yarn build"
СЛЕДУЮЩИЕ ШАГИ
--------------
1. Запустите сборку: ./deploy-simple.sh
2. Следите за логами (ищите зависание на "Building fresh packages")
3. Если успешно - проверьте: ./status.sh && curl http://localhost:3000
4. Отправьте результат (успех или детали ошибки)
КЛЮЧЕВАЯ ИДЕЯ
-------------
Не боремся с postinstall скриптами!
Позволяем им запускаться, но блокируем компиляцию через ENV.
Prisma работает (его postinstall только скачивает файлы).
============================================
ДАТА: 28 октября 2025
ВЕРСИЯ: v4 (радикальное решение)
СТАТУС: ⏳ ТЕСТИРУЕТСЯ
============================================