Serverless Lambda自定义Docker镜像是否需在Dockerfile末尾添加CMD指令?
问题解答
你当前的Dockerfile不存在自动执行serverless或Lambda启动逻辑的能力,必须显式添加对应启动指令,具体要求分两种场景:
场景1:镜像用于作为AWS Lambda自定义运行时容器部署
你当前使用的普通node:14.16.1-alpine基础镜像未内置Lambda所需的运行时组件,没有默认启动逻辑,有两种优化方案:
- (推荐)将基础镜像替换为AWS官方Lambda专用Node.js14镜像
public.ecr.aws/lambda/nodejs:14,该镜像已内置运行时客户端和默认ENTRYPOINT,你只需要在Dockerfile末尾添加CMD指定函数处理入口即可,示例:
# 原有构建逻辑保持不变 CMD ["app.handler"] # 按你实际的入口文件和导出函数名修改
- 若坚持使用当前普通Node.js镜像作为基础,需要额外安装
aws-lambda-ric依赖,同时显式配置ENTRYPOINT和CMD,否则Lambda无法正常拉起你的函数。
场景2:镜像用于执行Serverless Framework部署命令
你需要在Dockerfile末尾添加CMD指定对应的serverless指令,示例:
CMD ["serverless", "deploy"]
未指定CMD且运行容器时未传入启动命令的情况下,容器不会自动执行任何serverless相关操作。
内容的提问来源于stack exchange,提问作者David Faizulaev
相关产品推荐
相关产品推荐

