Странные ошибки памяти/IO при создании приложения nextjs/node внутри докера

У меня есть сервер Linux с 1,3 ТБ твердотельного накопителя nvme и 64 ГБ оперативной памяти.

Существует производственное приложение, основанное на последних версиях nextjs и nod. Итак, у меня есть docker-compose с контейнером для внешнего интерфейса, где я просто копирую файлы src и выполняю в Dockerfile:

RUN yarn install
RUN yarn build

Некоторое время все работало нормально, но вчера столкнулся с другими проблемами.

Во-первых, когда я захотел всё переразвернуть, Yarn install начала зависать в случайных местах, сообщая, что у меня сеть медленная (это не так). В качестве временного решения я решил запустить Yarn install на хост-машине и внутри Dockerfile скопировать исходный код с node_modules в контейнер. Это сработало, но на этапе сборки второй шаг начал давать сбой:

#23 0.261 yarn run v1.22.22
#23 0.283 $ GENERATE_SOURCEMAP=false next build
#23 0.717
#23 0.757   ▲ Next.js 14.2.5
#23 0.757
#23 0.804    Creating an optimized production build ...
#23 13.93 FATAL ERROR: v8::Object::GetCreationContextChecked No creation context available
#23 13.93 ----- Native stack trace -----
#23 13.93
#23 13.93  1: 0xe22fc9 node::OnFatalError(char const*, char const*) [/usr/local/bin/node]
#23 13.93  2: 0x122b176 v8::Utils::ReportApiFailure(char const*, char const*) [/usr/local/bin/node]
#23 13.93  3: 0x12405ac v8::Object::GetCreationContextChecked() [/usr/local/bin/node]
#23 13.93  4: 0xf7d90c  [/usr/local/bin/node]
#23 13.93  5: 0x7f78dd77613c
#23 13.93
#23 13.93
#23 13.93 #
#23 13.93 # Fatal error in , line 0
#23 13.93 # Missing deoptimization information for OptimizedFrame::Summarize.
#23 13.93 #
#23 13.93 #
#23 13.93 #
#23 13.93 #FailureMessage Object: 0x7fff91793c30
#23 13.93 ----- Native stack trace -----
#23 13.93
#23 13.93  1: 0xffe461  [/usr/local/bin/node]
#23 13.93  2: 0x28c276b V8_Fatal(char const*, ...) [/usr/local/bin/node]
#23 13.93  3: 0x139cff3 v8::internal::OptimizedFrame::Summarize(std::vector<v8::internal::FrameSummary, std::allocator<v8::internal::FrameSummary> >*) const [/usr/local/bin/node]
#23 13.93  4: 0x13a5116  [/usr/local/bin/node]
#23 13.93  5: 0x13a931c v8::internal::Isolate::CaptureDetailedStackTrace(int, v8::StackTrace::StackTraceOptions) [/usr/local/bin/node]
#23 13.94  6: 0x12361f3 v8::StackTrace::CurrentStackTrace(v8::Isolate*, int, v8::StackTrace::StackTraceOptions) [/usr/local/bin/node]
#23 13.94  7: 0xf76c96 node::GetCurrentStackTrace(v8::Isolate*, int) [/usr/local/bin/node]
#23 13.94  8: 0xec549b node::DumpJavaScriptBacktrace(_IO_FILE*) [/usr/local/bin/node]
#23 13.94  9: 0xe22fd5 node::OnFatalError(char const*, char const*) [/usr/local/bin/node]
#23 13.94 10: 0x122b176 v8::Utils::ReportApiFailure(char const*, char const*) [/usr/local/bin/node]
#23 13.94 11: 0x12405ac v8::Object::GetCreationContextChecked() [/usr/local/bin/node]
#23 13.94 12: 0xf7d90c  [/usr/local/bin/node]
#23 13.94 13: 0x7f78dd77613c
#23 14.07 Trace/breakpoint trap (core dumped)
#23 14.08 info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
#23 14.08 error Command failed with exit code 133.
#23 ERROR: process "/bin/sh -c yarn build" did not complete successfully: exit code: 133

Когда я попробовал выполнить эти действия локально на хост-компьютере без Docker, все было в порядке. Таким образом, проблема возникает только внутри Docker. Я тщательно исследовал ошибку, связанную с зависанием установки пряжи, и есть ссылка на то, что это может быть связано с медленным вводом-выводом. Проблема со сборкой также выглядит как проблема с памятью.

Такое ощущение, что Docker по каким-то причинам не хватает ресурсов или начал медленно работать. Обратите внимание: подобная проблема уже была у нас несколько месяцев назад. Мы пытались полностью стереть сервер, даже просили Hetzner заменить наши SSD, но это не помогло и проблема осталась. Поэтому мы были вынуждены просто перейти на другой сервер, и до сих пор все работало нормально.

Не верю, что уже второй раз какие-то "физические" проблемы с сервером, но выглядит это очень странно.

Докер версии 26.1.4, сборка 5650f9b NodeJ: 22 Linux: Ubuntu-22.04.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
383
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

У меня сегодня возникла такая же проблема. Я нашел основную причину в узле версии 22.5.0, который недавно был представлен в базовом образе Docker, который я использовал. Указание 22.4.0 решило проблему.

Удачи!

О боже... Ты только что сэкономил мне много времени. Большое спасибо. Также напоминаем, что закрепление точной версии очень важно.

Max Frai 19.07.2024 14:21

Действительно. Здесь тоже сэкономлено много времени.

Samveen 19.07.2024 14:59

Другие вопросы по теме