Jenkins+Maven+Gitee+Docker
https://blog.csdn.net/qq_45062377/article/details/120659737
目前服务端应用分成两部分,一个是函数服务一个是web服务,两个服务实现方式不同,需要使用不同的部署方式,进行部署
函数服务是使用腾讯云的服务,本地代码通过Git提交Gitee后,gitee会触发hook函数告知服务器的Jenkins,Jenkins会将代码从gitee上拉下来并在本地进行打包编译,打包编译完成后会去执行dockerfile,将jar包打成docker镜像,上传至腾讯云镜像仓库中,然后根据镜像自动部署腾讯云云函数中,并通过定时事件进行触发。
web服务是使用服务器进行部署的,函数服务过程相类似,运行dockerfile构建镜像后直接在服务器上启动容器构建服务。
无服务器并不是没有服务器就能够进行计算,而是对于开发者来说,无需了解底层的服务器情况,也能使用到相关资源,因此称为无服务器。
无服务器也可以从更广的角度来识别,针对无需配置和了解底层的服务器就可以直接使用的云服务,在一定程度上也可以称为无服务器
函数即服务提供了一种直接在云上运行无状态的、短暂的、由事件触发的代码的能力。
函数即服务和传统应用架构不同,函数服务提供的是事件触发式的运行方式,云函数不是始终运行的状态,而是在事件发生时由事件触发运行,并且在一次运行的过程中处理这一次事件。因此在云函数的代码中,仅需考虑针对一个事件的处理流程,而针对大量事件的高并发处理,由平台实现云函数的多实例并发来支持。
为了实现对高并发的支持,云函数平台提供了自动的弹性伸缩能力,会在有大量请求到来时启动更多实例来处理事件请求,也会在没有事件到来时缩减函数实例甚至到零实例。因此为了匹配自动扩缩能力,需要函数代码使用的是无状态开发方式,即不在云函数的运行内存中保留相关的状态数据并在多次运行时依赖这些状态数据。云函数的状态数据,可以依赖外部的持久存储能力例如云缓存、云数据库、云存储来进行
函数服务脚本
echo "stop and delete container"
CID=$(docker ps -a | grep "bdata-serverless" | awk '{print $1}')
if [ -n "$CID" ]; then
echo "has container,CID=$CID"
docker stop $CID
docker rm $CID
fi
echo "delete image"
DID=$(docker images | grep "bdata-serverless" | awk '{print $1}')
if [ -n "$DID" ]; then
docker rmi bdata-serverless
fi
echo "build docker image"
mvn dockerfile:build
echo "current docker images:"
docker images | grep bdata-serverless
echo "push tencentyun----->"
sudo docker tag bdata-serverless ccr.ccs.tencentyun.com/lenyuqin/bdata:bdata-serverless
sudo docker push ccr.ccs.tencentyun.com/lenyuqin/bdata:bdata-serverless
echo "push success!"
web服务脚本
echo "stop and delete container"
CID=$(docker ps -a | grep "b-data" | awk '{print $1}')
if [ -n "$CID" ]; then
echo "has container,CID=$CID"
docker stop $CID
docker rm $CID
fi
echo "delete image"
DID=$(docker images | grep "b-data" | awk '{print $1}')
if [ -n "$DID" ]; then
docker rmi b-data
fi
echo "build docker image"
cd bd-start
mvn dockerfile:build
echo "current docker images:"
docker images | grep b-data
echo "start container----->"
docker run -d --net=host --name b-data b-data
echo "start success!"