如何基于自定义Java 17基础镜像部署Spring Cloud Function为AWS Lambda及所需依赖
基于Java 17 + Spring Cloud的Lambda自定义镜像必备依赖
一、构建阶段必须安装的系统依赖
- Maven(或你使用的构建工具):你的Dockerfile里注释掉了
yum install -y maven,这步必须开启——要编译Java代码、拉取Spring Cloud相关依赖,没有Maven根本无法执行mvn命令。 - JDK环境:注意你当前用的
adoptopenjdk:17-jre-hotspot是JRE镜像,只能运行代码不能编译。构建阶段得换成JDK版本(比如adoptopenjdk:17-hotspot),否则编译时会报找不到javac的错误。 - 可选系统工具:比如
wget、unzip,如果安装Maven或处理依赖包时需要可以添加,但核心依赖就是Maven+JDK。
二、运行阶段必须包含的Java依赖(通过pom.xml引入)
这些是Spring Cloud对接Lambda的核心依赖,必须在你的pom.xml里声明,最终会被拷贝到镜像中:
spring-cloud-function-adapter-aws:核心适配包,你CMD里指定的FunctionInvoker就来自这个包,负责把Spring Cloud Function和Lambda的运行时API对接起来。aws-lambda-java-core:Lambda Java运行时的基础依赖,ENTRYPOINT里的AWSLambda类就来自这里,提供Lambda上下文、请求响应处理的核心接口。spring-cloud-function-context:Spring Cloud Function的核心上下文包,管理函数的注册、初始化和调用逻辑。- 基础Spring依赖:如果用Spring Boot的话,还需要
spring-boot-starter;纯Spring Cloud Function场景下,至少要Spring Context相关依赖支撑IOC容器。
三、你的Dockerfile优化建议
- 拆分构建/运行镜像:构建阶段用JDK镜像编译代码,运行阶段切回JRE镜像减小体积,最终镜像不会包含编译工具,更轻量化。
- 清理缓存减小体积:安装Maven后加
yum clean all,清理系统包缓存,避免构建镜像冗余。 - 明确依赖拷贝路径:
mvn dependency:copy-dependencies可以加上-DoutputDirectory=target/dependency参数,避免依赖路径歧义。 - 跳过测试加速构建:打包时加
-DskipTests,跳过测试用例编译,加快构建速度。
修正后的Dockerfile示例:
# 构建阶段:用JDK镜像编译代码 FROM adoptopenjdk:17-hotspot as build LABEL MAINTAINER=uniphore.com # 安装Maven并清理缓存 RUN yum install -y maven && yum clean all WORKDIR /src # 先拷贝pom.xml缓存依赖,避免代码改动重复拉取依赖 ADD pom.xml . RUN mvn dependency:go-offline -B RUN mvn dependency:copy-dependencies -DoutputDirectory=target/dependency -B # 拷贝所有代码并编译打包 ADD . . RUN mvn package -DskipTests -B # 运行阶段:用JRE镜像减小最终体积 FROM adoptopenjdk:17-jre-hotspot as runtime WORKDIR /function # 从构建阶段拷贝依赖和打包好的业务Jar包 COPY --from=build /src/target/dependency/*.jar ./ COPY --from=build /src/target/your-function-app.jar ./ # Lambda运行时入口类 ENTRYPOINT [ "/usr/bin/java", "-cp", "./*", "com.amazonaws.services.lambda.runtime.api.client.AWSLambda" ] # Spring Cloud Function调用器 CMD [ "org.springframework.cloud.function.adapter.aws.FunctionInvoker::handleRequest" ]
内容的提问来源于stack exchange,提问作者Ashok Priyadarshi
相关产品推荐
相关产品推荐

