131 lines
4.8 KiB
Plaintext
131 lines
4.8 KiB
Plaintext
==============================================
|
||
ИТОГОВАЯ СВОДКА: История оптимизации сборки
|
||
==============================================
|
||
|
||
ПРОБЛЕМА #1: Зависание на 16+ часов
|
||
------------------------------------
|
||
Симптомы:
|
||
- yarn install зависал на компиляции нативных модулей
|
||
- Процесс не завершался даже после 16 часов
|
||
|
||
Попытка исправления #1: --ignore-scripts
|
||
✅ Результат: Установка ускорилась до 3-5 минут
|
||
❌ Проблема: Нет бинарных движков для Prisma
|
||
|
||
|
||
ПРОБЛЕМА #2: Ошибка Prisma Client
|
||
----------------------------------
|
||
Симптомы:
|
||
Type error: Module '"@prisma/client"' has no exported member 'PrismaClient'
|
||
|
||
Попытка исправления #2: Трехшаговая установка
|
||
Шаги:
|
||
1. yarn add prisma (с postinstall)
|
||
2. npx prisma generate
|
||
3. yarn install --ignore-scripts (для остальных пакетов)
|
||
|
||
❌ Результат: Шаг 3 переустанавливает @prisma/client из кэша,
|
||
стирая сгенерированные файлы
|
||
|
||
|
||
Попытка исправления #3: Обратный порядок
|
||
Шаги:
|
||
1. yarn install --ignore-scripts (ВСЕ пакеты)
|
||
2. yarn add prisma (С postinstall)
|
||
3. npx prisma generate
|
||
|
||
❌ Результат: TypeScript все равно не видит экспорты
|
||
|
||
|
||
ФИНАЛЬНОЕ РЕШЕНИЕ #4: Обычная установка с ENV
|
||
----------------------------------------------
|
||
Концепция:
|
||
- Отказываемся от --ignore-scripts
|
||
- Устанавливаем ВСЕ зависимости с postinstall
|
||
- Используем переменные окружения для отключения компиляции
|
||
|
||
Код:
|
||
```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
|
||
|
||
RUN yarn install --network-timeout 300000 --network-concurrency 4
|
||
RUN npx prisma generate --schema=./prisma/schema.prisma
|
||
```
|
||
|
||
Ожидаемое время: 13-15 минут
|
||
Статус: ⏳ ТЕСТИРУЕТСЯ
|
||
|
||
|
||
СРАВНЕНИЕ ВСЕХ ПОДХОДОВ
|
||
------------------------
|
||
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 минут ⏳ ТЕСТИРУЕМ
|
||
|
||
|
||
БЫСТРЫЙ СТАРТ
|
||
-------------
|
||
cd /home/ubuntu/global_it24_landing
|
||
git pull origin master
|
||
docker system prune -a # Нажмите 'y'
|
||
./deploy-simple.sh
|
||
|
||
|
||
ДОКУМЕНТАЦИЯ
|
||
------------
|
||
BUILD_OPTIMIZATION.md - полная история оптимизации
|
||
RADICAL_FIX.md - текущее решение (v4)
|
||
FIX_PRISMA.md - детали проблемы Prisma
|
||
QUICK_FIX.md - первое исправление зависания
|
||
DATABASE.md - работа с PostgreSQL
|
||
README.deployment.md - инструкции по развертыванию
|
||
|
||
|
||
РЕПОЗИТОРИЙ
|
||
-----------
|
||
git.mscsrv.ru/sa/global_it24_landing.git
|
||
|
||
Последний коммит:
|
||
"РАДИКАЛЬНО: обычный 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 (радикальное решение)
|
||
СТАТУС: ⏳ ТЕСТИРУЕТСЯ
|
||
============================================
|