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!

asked 2 years ago937 views
2 Answers
0
Accepted Answer

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
EXPERT
Uri
answered 2 years ago
profile picture
EXPERT
reviewed 23 days ago
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
answered 2 years ago

You are not logged in. Log in to post an answer.

A good answer clearly answers the question and provides constructive feedback and encourages professional growth in the question asker.

Guidelines for Answering Questions