Рейтинг:0

Ошибка при сборке AWS Lambda Node 14arm64 с Sharp на образе Docker

флаг jp

Я меняю настройку узла с узел 14 x64 к узел 14 arm64 в записи Amazon ECR (Docker).

Он строится без проблем, когда я использую этот образ: ОТ aws/лямбда/узлы: 14 и эта команда для установки резкого ЗАПУСК npm install --platform=linux Sharp

Теперь мне нужно использовать Узел 14 arm64 image, но он запускает эту ошибку при сборке с помощью Sharp JS (Linux arm 64):

Докерфайл:

ОТ public.ecr.aws/lambda/nodejs:14-arm64

# Выполнение команд
КОПИРОВАТЬ index.js package.json ${LAMBDA_TASK_ROOT}
КОПИРОВАТЬ шрифты ${LAMBDA_TASK_ROOT}/fonts/
КОПИРОВАТЬ источник ${LAMBDA_TASK_ROOT}/источник/

# Команды
ЗАПУСТИТЬ очистку кэша npm --force
RUN rm -rf node_modules
ЗАПУСК npm install --arch=arm64 --platform=linux Sharp

CMD ["index.handler"]

Команда сборки:

docker build -t мой-проект-v1.
тег docker my-project-v1:latest {АККАУНТ}.dkr.ecr.us-east-1.amazonaws.com/my-project-v1:latest
docker push {АККАУНТ}.dkr.ecr.us-east-1.amazonaws.com/my-project-v1:latest

Ошибка:

=> ОШИБКА [6/8] RUN npm install 7.3s
------                                                                                                                                                
 > [6/8] ЗАПУСК npm install:                                                                                                                             
№ 10 2.231 npm ПРЕДУПРЕЖДЕНИЕ об устаревшем [email protected]: API-интерфейс querystring считается устаревшим. вместо этого новый код должен использовать API URLSearchParams.       
#10 2.249 npm ПРЕДУПРЕЖДЕНИЕ устарело [email protected]: обновите до версии 7 или выше. Более старые версии могут использовать Math.random() в определенных обстоятельствах, что, как известно, проблематично. Подробнее см. https://v8.dev/blog/math-random.                                                                       
#10 6.947                                                                                                                                             
#10 6.947 > [email protected] установить /var/task/node_modules/sharp
#10 6.947 > (установка узла/libvips && установка узла/dll-copy && prebuild-install) || (установка узла/может скомпилировать && node-gyp перестроить && установка узла/dll-копия)
#10 6.947 
# 10 7.046 Sharp: Ошибка установки: использование с glibc 2.26 требует ручной установки libvips >= 8.11.3
# 10 7.046 Sharp: необходимые зависимости см. на странице https://sharp.pixelplumbing.com/install.
# 10 7.172 npm ПРЕДУПРЕЖДЕНИЕ, необязательное ПРОПУСК ДОПОЛНИТЕЛЬНОЙ ЗАВИСИМОСТИ: fsevents@~2.3.2 (node_modules/chokidar/node_modules/fsevents):
#10 7.173 npm WARN notsup ПРОПУСК ДОПОЛНИТЕЛЬНОЙ ЗАВИСИМОСТИ: Неподдерживаемая платформа для [email protected]: требуется {"os":"darwin","arch":"any"} (текущий: {"os":"linux"," арка":"arm64"})
#10 7.174 
#10 7,234 н/мин ОШИБКА! код ELIFECYCLE
#10 7,235 н/мин ОШИБКА! ошибка 1
#10 7,242 н/мин ОШИБКА! [email protected] install: `(установка узла/libvips && установка узла/dll-copy && prebuild-install) || (установить/можно скомпилировать узел && перестроить узел-gyp && установить узел/копировать dll)`
#10 7,242 н/мин ОШИБКА! Выход из состояния 1
#10 7,243 н/мин ОШИБКА! 
#10 7,244 н/мин ОШИБКА! Сбой сценария установки [email protected].
#10 7,244 н/мин ОШИБКА! Вероятно, это не проблема с npm. Вероятно, выше приведен дополнительный вывод журнала.
#10 7.261 
#10 7,262 н/мин ОШИБКА! Полный журнал этого запуска можно найти в:
#10 7,262 н/мин ОШИБКА! /root/.npm/_logs/2022-01-10T13_28_10_709Z-debug.lo
Рейтинг:2
флаг cn

В сообщении об ошибке говорилось, что проблема связана с libvips: Sharp: Ошибка установки: для использования с glibc 2.26 требуется ручная установка libvips >= 8.11.3. Поиск в официальная документация Sharp Я обнаружил, что на машинах, отличных от Linux x64 (например, в вашем случае: Linux arm64), вы должны игнорировать глобальные libvips обновление SHARP_IGNORE_GLOBAL_LIBVIPS переменная окружения:

установка нпм
SHARP_IGNORE_GLOBAL_LIBVIPS=1 npm install --arch=x64 --platform=linux sharp

Итак, вы должны обновить свой Докерфайл к следующему:

ОТ public.ecr.aws/lambda/nodejs:14-arm64

# Выполнение команд
КОПИРОВАТЬ index.js package.json ${LAMBDA_TASK_ROOT}
КОПИРОВАТЬ шрифты ${LAMBDA_TASK_ROOT}/fonts/
КОПИРОВАТЬ источник ${LAMBDA_TASK_ROOT}/источник/

# Команды
ЗАПУСТИТЬ очистку кэша npm --force
RUN rm -rf node_modules

## обновите файл dockerfile следующими строками:
ЗАПУСТИТЬ установку npm
RUN SHARP_IGNORE_GLOBAL_LIBVIPS=1 npm install --arch=x64 --platform=linux sharp

CMD ["index.handler"]
Matheus Pereira avatar
флаг jp
Я пробовал это, но ошибка та же. Я думаю, что образ `public.ecr.aws/lambda/nodejs:14-arm64` еще не поддерживает библиотеку Sharp, потому что образ `amazon/aws-lambda-nodejs:14` идеально подходит для Sharp x64.
Luiz Lelis avatar
флаг cn
используя тот же `dockerfile`, который вы показали выше, я смог воспроизвести ошибку, а также исправить ее с помощью `SHARP_IGNORE_GLOBAL_LIBVIPS=1`. Вы уверены, что ошибка, показанная в `stdout`, такая же?

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.