Create Lambda Layer in Dockerfile

0

Hi, just wondering, during docker build, if I install node packages in the folder /opt/nodejs and copy the folder node_modules/ plus files package.* to the final image like the following:

FROM public.ecr.aws/lambda/nodejs:16 as builder
WORKDIR /opt/nodejs
RUN npm install pkg1 pkg2 pkg3

FROM public.ecr.aws/lambda/nodejs:16
COPY --from=builder /opt/nodejs /opt/nodejs
COPY . ${LAMBDA_TASK_ROOT}

would this be a valid way to create a lambda layer? Thanks!

preguntada hace 2 años961 visualizaciones
2 Respuestas
0
Respuesta aceptada

Lambda container images does not support layers. Layers are only a way to add dependencies, so all you have to do is include those dependencies in your docker image. Layers use the /opt. When you use docker, you don't have to use /opt and you can deploy your dependencies in the regular location.

I don't think you need to use FROM twice. Just use the second, npm install, and copy the application files.

profile pictureAWS
EXPERTO
Uri
respondido hace 2 años
profile picture
EXPERTO
revisado hace un mes
0

I don't know in JS, but in Python what I would do is use the docker image provided by lambda to install my packages into a specific folder. Zip that, store it in S3, job done. So yes, I suppose a multi-stages build works as well. But again, I am not familiar with the specific inner workings of NPM to achieve that.

profile picture
respondido hace 2 años

No has iniciado sesión. Iniciar sesión para publicar una respuesta.

Una buena respuesta responde claramente a la pregunta, proporciona comentarios constructivos y fomenta el crecimiento profesional en la persona que hace la pregunta.

Pautas para responder preguntas