Puncte:0

Eroare la construirea AWS Lambda Node 14arm64 cu Sharp pe o imagine Docker

drapel jp

Schimb configurarea unui nod din nodul 14 x64 la nodul 14 arm64 într-o intrare Amazon ECR (Docker).

Se construiește fără probleme când folosesc această imagine: DE LA aws/lambda/nodejs:14 și această comandă pentru a instala sharp RUN npm install --platform=linux sharp

Acum trebuie să folosesc Nodul 14 braț64 imagine, dar lansează această eroare în timp ce construiește cu Sharp JS (brațul Linux 64):

Dockerfile:

DE LA public.ecr.aws/lambda/nodejs:14-arm64

# Exec comenzi
COPIEAZĂ index.js package.json ${LAMBDA_TASK_ROOT}
COPIAȚI fonturile ${LAMBDA_TASK_ROOT}/fonts/
COPY src ${LAMBDA_TASK_ROOT}/src/

# Comenzi
RUN npm cache clean --force
RUN rm -rf module_nod
RUN npm install --arch=arm64 --platform=linux sharp

CMD [„index.handler”]

Comanda de compilare:

docker build -t my-project-v1 .
etichetă docker my-project-v1:latest {ACCOUNT}.dkr.ecr.us-east-1.amazonaws.com/my-project-v1:latest
docker push {ACCOUNT}.dkr.ecr.us-east-1.amazonaws.com/my-project-v1:latest

Eroare:

=> EROARE [6/8] RUN npm install 7.3s
------                                                                                                                                                
 > [6/8] RUN npm install:                                                                                                                             
#10 2.231 npm WARN depreciat [email protected]: API-ul querystring este considerat Legacy. codul nou ar trebui să folosească API-ul URLSearchParams.       
#10 2.249 npm WARN depreciat [email protected]: Vă rugăm să faceți upgrade la versiunea 7 sau mai mare. Versiunile mai vechi pot folosi Math.random() în anumite circumstanțe, ceea ce este cunoscut a fi problematic. Consultați https://v8.dev/blog/math-random pentru detalii.                                                                       
#10 6.947                                                                                                                                             
#10 6.947 > [email protected] instalează /var/task/node_modules/sharp
#10 6.947 > (instalare nod/libvips && instalarea nod/dll-copy && prebuild-install) || (instalare nod/can-compile && node-gyp reconstruire && instalarea nod/dll-copy)
#10 6.947 
#10 7.046 sharp: Eroare de instalare: Utilizarea cu glibc 2.26 necesită instalarea manuală a libvips >= 8.11.3
#10 7.046 sharp: Consultați https://sharp.pixelplumbing.com/install pentru dependențele necesare
#10 7.172 npm WARN opțional OMITEREA DEPENDENȚEI OPȚIONALE: fsevents@~2.3.2 (node_modules/chokidar/node_modules/fsevents):
#10 7.173 npm WARN notsup SĂRIREA DEPENDENȚEI OPȚIONALE: Platformă neacceptată pentru [email protected]: dorit {"os":"darwin","arch":"any"} (actual: {"os":"linux","), arch":"arm64"})
#10 7.174 
#10 7.234 npm ERR! cod ELIFECYCLE
#10 7.235 npm ERR! eroare 1
#10 7.242 npm ERR! [email protected] install: `(instalare nod/libvips && instalare nod/dll-copy && prebuild-install) || (instalare nod/can-compile && node-gyp reconstruire && instalarea nod/dll-copy)`
#10 7.242 npm ERR! Stare de ieșire 1
#10 7.243 npm ERR! 
#10 7.244 npm ERR! A eșuat la scriptul de instalare [email protected].
#10 7.244 npm ERR! Aceasta probabil că nu este o problemă cu npm. Există probabil o ieșire suplimentară de înregistrare mai sus.
#10 7.261 
#10 7.262 npm ERR! Un jurnal complet al acestei rulări poate fi găsit în:
#10 7.262 npm ERR! /root/.npm/_logs/2022-01-10T13_28_10_709Z-debug.lo
Puncte:2
drapel cn

Mesajul de eroare spunea că problema este legată de libvips: sharp: Eroare de instalare: Utilizarea cu glibc 2.26 necesită instalarea manuală a libvips >= 8.11.3. Căutând în documentație oficială clară Am descoperit că pe alte mașini decât Linux x64 (cum ar fi în cazul dvs.: Linux arm64), ar trebui să ignorați global libvips actualizarea SHARP_IGNORE_GLOBAL_LIBVIPS variabilă de mediu:

instalare npm
SHARP_IGNORE_GLOBAL_LIBVIPS=1 instalare npm --arch=x64 --platform=linux sharp

deci, ar trebui să vă actualizați Dockerfile la următoarele:

DE LA public.ecr.aws/lambda/nodejs:14-arm64

# Exec comenzi
COPIEAZĂ index.js package.json ${LAMBDA_TASK_ROOT}
COPIAȚI fonturile ${LAMBDA_TASK_ROOT}/fonts/
COPY src ${LAMBDA_TASK_ROOT}/src/

# Comenzi
RUN npm cache clean --force
RUN rm -rf module_nod

## actualizați fișierul docker cu următoarele linii:
RUN instalarea npm
RUN SHARP_IGNORE_GLOBAL_LIBVIPS=1 instalare npm --arch=x64 --platform=linux sharp

CMD [„index.handler”]
Matheus Pereira avatar
drapel jp
Am încercat asta, dar eroarea este aceeași. Cred că imaginea `public.ecr.aws/lambda/nodejs:14-arm64` nu acceptă încă biblioteca sharp, deoarece imaginea `amazon/aws-lambda-nodejs:14` este perfectă cu sharp x64.
Luiz Lelis avatar
drapel cn
folosind același `dockerfile` pe care l-ați arătat mai sus, am putut reproduce eroarea și, de asemenea, să o repar cu `SHARP_IGNORE_GLOBAL_LIBVIPS=1`. Sunteți sigur că eroarea afișată în `stdout` este aceeași?

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.