一直都以 .net 为主要开发语言,但Java就业机会更多,研究下Java的开发流程。
项目用的Jdk1.8 spring boot 项目。
项目目录结构如下, Vue项目在 Java spring boot 的解决方案中。
发布方式采用的是 Jenkins + docker 进行发布,服务器用的是 Centos8。
Jenkins 安装maven 插件安装并配置。
1.新建Jenkis任务,选择构建一个maven项目。
2.项目中配置git源码 地址和账号。
3.在Post Step 中选择 Run regardless of build result 。
执行shell, 主要操作是 后端把maven编译后的jar包打包成 docker images 并生成container 运行 映射端口 和 目录。
前端 yarn 编译打包 ,然后生成 docker images 并生成container 运行 映射端口 和 目录。
shell脚本如下(按照自己容器 image 酌情修改)
#!/bin/bash #===================================================================================== #=================================1、定义初始化变量====================================== #===================================================================================== echo '============查看打包环境================' #cd target/dist pwd echo $PATH #操作/项目路径(Dockerfile存放的路径) BASE_PATH=Wiki #项目名称 SERVER_NAME=wikiapp #获此项目的取容器id CID=$(docker ps -a | grep -w "$SERVER_NAME" | awk '{print $1}') #获取此项目的镜像id IID=$(docker images | grep -w "$SERVER_NAME" | awk '{print $3}') #===================================================================================== #=========================2、移动jenkins已经构建好的jar包到Dockerfile所在目录========================= #===================================================================================== # 查找源jar文件名,进行重命名,最后将源文件移动到Dockerfile文件所在目录 function transfer(){ echo "=========================>>>>>>>移动jenkins构建好的jar到Dockerfile所在目录,并重命名为wiki.jar" #cd .. pwd mv Dockerfile target/dist/Dockerfile cd target/dist pwd echo "=========================>>>>>>>迁移完成Success" } #===================================================================================== #==================================3、构建最新镜像======================================= #===================================================================================== # 构建docker镜像 function build(){ #无论镜像存在与否,都停止原容器服务,并移除原容器服务 echo "=========================>>>>>>>停止$SERVER_NAME容器,CID=$CID" docker stop $CID echo "=========================>>>>>>>移除$SERVER_NAME容器,CID=$CID" docker rm $CID #无论如何,都去构建新的镜像 #构建新的镜像之前,移除旧的镜像 if [ -n "$IID" ]; then echo "=========================>>>>>>>存在$SERVER_NAME镜像,IID=$IID" echo "=========================>>>>>>>移除老的$SERVER_NAME镜像,IID=$IID" docker rmi $IID echo "=========================>>>>>>>构建新的$SERVER_NAME镜像,开始---->" cd $BASE_PATH docker build -t $SERVER_NAME . echo "=========================>>>>>>>构建新的$SERVER_NAME镜像,完成---->" else echo "=========================>>>>>>>不存在$SERVER_NAME镜像,构建新的镜像,开始--->" cd $BASE_PATH docker build -t $SERVER_NAME . echo "=========================>>>>>>>构建新的$SERVER_NAME镜像,结束--->" fi } #===================================================================================== #==============================4、最后运行docker容器,启动服务=============================== #===================================================================================== # 运行docker容器 # 先备份老的jar包 # 再移动新的jar包到Dockerfile文件所在目录 # 接着,构建新的镜像 # 最后运行最新容器,启动服务 function run(){ transfer build #docker run -d --restart=always --name wiki pwd } #入口 run docker run -d -p 10140:8880 --name $SERVER_NAME -v /log:/app/wiki/log $SERVER_NAME echo '==================================前端容器==================================' cd .. cd .. cd web pwd #ls rm -rf ./dist/* yarn install yarn run build-prod #打包后的进入文件夹 #cd /var/lib/jenkins/workspace/webapi/bin/Debug/netcoreapp3.1/publish/ cd dist pwd docker stop wikifront docker rm wikifront docker rmi wikifront_image #重新构建镜像和容器 docker build -t wikifront_image . docker run -d -p 10141:80 --name wikifront wikifront_image
前端脚本未做初始化处理
docker stop wikifront
docker rm wikifront
docker rmi wikifront_image
如果是第一次运行 注释即可。
执行脚本 按照对应端口访问即可
文章评论