Điểm:0

Lỗi khi xây dựng AWS Lambda Node 14arm64 với Sharp trên hình ảnh Docker

lá cờ jp

Tôi đang thay đổi thiết lập nút từ nút 14 x64 đến nút 14 arm64 trong một mục nhập Amazon ECR (Docker).

Nó xây dựng không có vấn đề gì khi tôi sử dụng hình ảnh này: TỪ aws/lambda/nodejs:14 và lệnh này để cài đặt sắc nét CHẠY cài đặt npm --platform=linux sharp

Bây giờ tôi cần sử dụng nút 14 arm64 image, nhưng nó khởi chạy lỗi này khi xây dựng bằng Sharp JS (Linux arm 64):

Dockerfile:

TỪ public.ecr.aws/lambda/nodejs:14-arm64

# Lệnh thực thi
SAO CHÉP index.js package.json ${LAMBDA_TASK_ROOT}
SAO CHÉP phông chữ ${LAMBDA_TASK_ROOT}/phông chữ/
SAO CHÉP src ${LAMBDA_TASK_ROOT}/src/

# Lệnh
RUN npm cache clean --force
CHẠY rm -rf node_modules
CHẠY cài đặt npm --arch=arm64 --platform=linux sharp

CMD ["index.handler"]

Xây dựng lệnh:

docker build -t my-project-v1 .
thẻ docker my-project-v1:latest {ACCOUNT}.dkr.ecr.us-east-1.amazonaws.com/my-project-v1:latest
docker đẩy {TÀI KHOẢN}.dkr.ecr.us-east-1.amazonaws.com/my-project-v1:latest

Lỗi:

=> LỖI [6/8] RUN npm install 7.3s
------                                                                                                                                                
 > [6/8] CHẠY cài đặt npm:                                                                                                                             
#10 2.231 npm WARN không dùng nữa [email protected]: API chuỗi truy vấn được coi là Cũ. thay vào đó, mã mới nên sử dụng API URLSearchParams.       
#10 2.249 npm CẢNH BÁO không dùng nữa [email protected]: Vui lòng nâng cấp lên phiên bản 7 trở lên. Các phiên bản cũ hơn có thể sử dụng Math.random() trong một số trường hợp nhất định, được biết là có vấn đề. Xem https://v8.dev/blog/math-random để biết chi tiết.                                                                       
#10 6.947                                                                                                                                             
#10 6.947 > cài đặt [email protected] /var/task/node_modules/sharp
#10 6.947 > (cài đặt nút/libvips && cài đặt nút/dll-copy && prebuild-install) || (cài đặt nút/có thể biên dịch && xây dựng lại nút-gyp && cài đặt nút/dll-copy)
#10 6.947 
#10 7.046 sharp: Lỗi cài đặt: Sử dụng với glibc 2.26 yêu cầu cài đặt thủ công libvips >= 8.11.3
#10 7.046 sắc nét: Vui lòng xem https://sharp.pixelplumbing.com/install để biết các thành phần phụ thuộc bắt buộc
#10 7.172 npm CẢNH BÁO tùy chọn BỎ QUA PHỤ THUỘC TÙY CHỌN: fsevents@~2.3.2 (node_modules/chokidar/node_modules/fsevents):
#10 7.173 npm CẢNH BÁO notsup BỎ QUA PHỤ THUỘC TÙY CHỌN: Nền tảng không được hỗ trợ cho [email protected]: muốn {"os":"darwin","arch":"any"} (hiện tại: {"os":"linux"," vòm":"arm64"})
#10 7.174 
#10 7.234 npm ERR! mã ELIFECLE
#10 7.235 npm ERR! lỗi 1
#10 7.242 npm ERR! [email protected] cài đặt: `(cài đặt nút/libvips && cài đặt nút/dll-copy && prebuild-install) || (cài đặt nút/có thể biên dịch && xây dựng lại nút-gyp && cài đặt nút/dll-copy)`
#10 7.242 npm ERR! Trạng thái thoát 1
#10 7.243 npm ERR! 
#10 7.244 npm ERR! Không thành công tại tập lệnh cài đặt [email protected].
#10 7.244 npm ERR! Đây có lẽ không phải là vấn đề với npm. Có khả năng đầu ra ghi nhật ký bổ sung ở trên.
#10 7.261 
#10 7.262 npm ERR! Bạn có thể tìm thấy nhật ký đầy đủ của lần chạy này tại:
#10 7.262 npm ERR! /root/.npm/_logs/2022-01-10T13_28_10_709Z-debug.lo
Điểm:2
lá cờ cn

Thông báo lỗi cho biết sự cố có liên quan đến libvip: sharp: Lỗi cài đặt: Sử dụng với glibc 2.26 yêu cầu cài đặt thủ công libvips >= 8.11.3. tìm kiếm trong tài liệu sắc nét chính thức Tôi thấy rằng trên các máy không phải Linux x64 (như trong trường hợp của bạn: Linux arm64), bạn nên bỏ qua toàn cầu libvip cập nhật các SHARP_IGNORE_GLOBAL_LIBVIPS biến môi trường:

cài đặt npm
SHARP_IGNORE_GLOBAL_LIBVIPS=1 npm cài đặt --arch=x64 --platform=linux sharp

vì vậy, bạn nên cập nhật Dockerfile theo sau:

TỪ public.ecr.aws/lambda/nodejs:14-arm64

# Lệnh thực thi
SAO CHÉP index.js package.json ${LAMBDA_TASK_ROOT}
SAO CHÉP phông chữ ${LAMBDA_TASK_ROOT}/phông chữ/
SAO CHÉP src ${LAMBDA_TASK_ROOT}/src/

# Lệnh
RUN npm cache clean --force
CHẠY rm -rf node_modules

## cập nhật dockerfile với các dòng sau:
CHẠY cài đặt npm
RUN SHARP_IGNORE_GLOBAL_LIBVIPS=1 npm cài đặt --arch=x64 --platform=linux sharp

CMD ["index.handler"]
Matheus Pereira avatar
lá cờ jp
Tôi đã thử điều này, nhưng lỗi là như nhau. Tôi nghĩ rằng hình ảnh `public.ecr.aws/lambda/nodejs:14-arm64` chưa hỗ trợ thư viện sharp vì hình ảnh `amazon/aws-lambda-nodejs:14` hoàn hảo với x64 sắc nét.
Luiz Lelis avatar
lá cờ cn
bằng cách sử dụng cùng `dockerfile` mà bạn đã hiển thị ở trên, tôi có thể tạo lại lỗi và cũng có thể sửa nó bằng `SHARP_IGNORE_GLOBAL_LIBVIPS=1`. Bạn có chắc chắn rằng lỗi hiển thị trong `stdout` giống nhau không?

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.