OpenFaas自定义Springboot模板

本文详细介绍了如何创建并配置OpenFaas的SpringBoot模板,包括template.yml、function目录、Dockerfile等内容。template.yml定义了模板信息,function包含部署代码,Dockerfile则用于构建基于Maven和OpenJDK的基础镜像,最终生成能够通过OpenFaas平台运行的SpringBoot函数应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

思路

  1. 创建文件夹,如下,这样通过faas-cli new --list命令就可以看到springboot模板

    mkdir -p template/springboot
    faas-cli new --list
    

    在这里插入图片描述

  2. cd template/springboot

  3. touch Dockerfile

  4. mkdir function

  5. touch template.yml

下面着重介绍template.yml、function、Dockerfile的内容。

template.yml

当使用faas new event-springboot --lang springboot新建模板文件时,openfaas会使用template.yml中的内容提示用户。

language: springboot
welcome_message: |
  You have created a function using the java8 and maven3 and springboot template

function

function文件夹是部署的代码,里面的代码部署后,可以直接访问。如果需要自定义部署的代码,只需要将你的代码放到这个文件夹中。例如模板代码,部署后直接可以调用。
注:m2中的settings.xml配置好拉取依赖的仓库,在Dockerfile中要使用项目的maven配置打包代码,并启动代码

在这里插入图片描述

Dockerfile

# maven和jdk作为基础镜像
FROM maven:3.6.3-openjdk-8 as builder
# 指定容器的一个目录,容器启动时执行的命令会在该目录下执行
WORKDIR /home/app
# 将当前目录下的所有文件拷贝到镜像的/home/app目录下
COPY . /home/app/
# 进入function中,在pom.xml所在目录执行maven打包
RUN cd function && mvn clean package -U -DskipTests --settings ./m2/settings.xml
# maven打包后,所有的依赖会下载到target目录下,
RUN cp /home/app/function/target/*.jar ./application.jar
# 通过pom.xml中的spring-boot-maven-plugin插件(spring-boot-jarmode-layertools)
# 从application.jar中提取文件,生成docker镜像里面的各个文件
RUN java -Djarmode=layertools -jar application.jar extract
# 使用of-watchdog做代理,将请求转发到springboot工程里
FROM openfaas/of-watchdog:0.7.6 as watchdog
# jdk运行环境
FROM openjdk:8-jre-slim as ship
# 为了安全起见,在生产环境运行容器时不要用指root帐号和群组
RUN addgroup --system app \
    && adduser --system --ingroup app app
# 从of-watchdog镜像中复制二进制文件fwatchdog,这是容器的启动进程
COPY --from=watchdog /fwatchdog /usr/bin/fwatchdog
# 赋予可执行权限
RUN chmod +x /usr/bin/fwatchdog
WORKDIR /home/app
# 前面提取命令执行成功后取得的文件,用于镜像中启动应用所需
COPY --from=builder /home/app/dependencies/ ./
COPY --from=builder /home/app/spring-boot-loader/ ./
COPY --from=builder /home/app/snapshot-dependencies/ ./
COPY --from=builder /home/app/application/ ./
# 指定容器的运行帐号
user app
# 指定容器的工作目录
WORKDIR /home/app/
# fwatchdog收到web请求后的转发地址,java进程监听的就是这个端口
ENV upstream_url="http://127.0.0.1:8082"
# 运行模式是http
ENV mode="http"
# 拉起业务进程的命令,这里就是启动java进程
ENV fprocess="java org.springframework.boot.loader.JarLauncher"
# 容器对外暴露的端口,也就是fwatchdog进程监听的端口
EXPOSE 8080
# 健康检查
HEALTHCHECK --interval=5s CMD [ -e /tmp/.lock ] || exit 1
# 容器启动命令,这里是执行二进制文件fwatchdog
CMD ["fwatchdog"]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值