当前位置: 首页 > article >正文

docker自动构建jar镜像,自动发布最新镜像的简单shell脚本

使用docker自动构建spring boot jar,自动发布最新镜像的简单shell脚本。一般在docker上部署流程问为:
构建docker镜像 -> 停止旧版本 -> 杀掉旧版本 -> 部署最新镜像。

1、maven/mvd/gradle 打包spring boot jar
2、编写Dockerfile,
注意: 如果项目中涉及导出word/excel/ppt/pdf/md/txt等文件并且涉及中文,需要在将中文字体同时构建到镜像中,解决导出文件中文乱码问题。若无,可移除配置

FROM openjdk:8-jdk-alpine
# 作者
MAINTAINER Yang douya
# jar包添加到镜像中 第一个是maven打包jar 第二个为在镜像中得jar名称 通常aven打包jar都会价版本号 镜像版本不用
ADD  bt-starter.jar  bt-starter.jar
# 应用中有中文标识 特别是验证码会报java.lang.NullPointerException at sun.awt.FontConfiguration.getVersion异常 解决增加字体
RUN echo -e 'https://mirrors.aliyun.com/alpine/v3.6/main/\nhttps://mirrors.aliyun.com/alpine/v3.6/community/' > /etc/apk/repositories \
 && apk update \
 && apk upgrade \
 && apk --no-cache add ttf-dejavu fontconfig
# 安装中文 安装本地中文字体一定要却换工作地址 [可能存在找不到jar问题]
#WORKDIR /home/yangdouya/projects/smart-transport
#直接将字体文件目录和需要构建的 jar放在同一目录即可解决切换工作空间导致找不jar问题
COPY font/simsun.ttf /usr/share/fonts
# 解决时差8小时问题
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# 暴露端口号
EXPOSE 8085
# 容器启动之后要执行的命令
ENTRYPOINT ["java", "-jar", "bt-starter.jar", "--spring.profiles.active=test"]

一键执行构建镜像和发布shell脚本docker-build-run.sh

#!/bin/sh
C_VERSION=$(docker ps | grep bt-starter | awk '{print $2}'| awk -F ":" '{print $2}')
read -p "当前版本号 $C_VERSION 请输入最新版本号:" inputVal
echo "输入 $inputVal"
# 执行构建指定版本镜像
docker build -t bt-starter:$inputVal .
# 执行完成后查询是否运行得有镜像并停止删除容器
PID=$(docker ps | grep bt-starter | awk '{print $1}')
if [ -z "$PID" ]
then
	echo "bt-starter 无正在运行容器进程"
else
	echo "bt-starter 正在停止容器进程 $PID"
fi
PIDS=$(docker ps -a | grep bt-starter | awk '{print $1}')
for pid in $PIDS
do
	docker stop $pid
	docker rm $pid
done 
echo "bt-starter 停止容器 -> 删除容器完成"
# 执行启动最新版本容器
echo "正在启动镜像 bt-starter:$inputVal"
docker run --name bt-starter -p 8080:8080 \
-v /etc/localtime:/etc/localtime \
-v /home/yangdouya/projects/data/export-template:/data/export-template \
-v /home/yangdouya/projects/data/temp:/data/temp \
-v /home/yangdouya/projects/data/logs:/logs \
-d bt-starter:$inputVal

echo "启动镜像 bt-starter:$inputVal 完成"

将docker-build-run.sh脚本设置为可执行文件
chmod +x docker-build-run.sh

执行脚本:
docker-build-run.sh

这里预留了当前jar的版本输入,如果jar包有版本号可以直接获取。


http://www.kler.cn/a/104958.html

相关文章:

  • 【码银送书第九期】《ChatGPT 驱动软件开发:AI 在软件研发全流程中的革新与实践》
  • 【CMN】Power management
  • 【深度学习实验】循环神经网络(五):基于GRU的语言模型训练(包括自定义门控循环单元GRU)
  • 26装饰器3(在面向对象的过程中使用装饰器)
  • 墨西哥专线大型工程设备海运
  • 0基础学习PyFlink——使用Table API实现SQL功能
  • uniapp实现登录组件之外区域置灰并引导登录
  • 从零开始 Spring Cloud 15:多级缓存
  • 16 用于NOMA IoT网络上行链路安全速率最大化的HAP和UAV协作框架
  • [Python从零到壹] 七十二.图像识别及经典案例篇之OpenGL入门及绘制基本图形和3D图
  • https下载图片
  • 强化学习问题(7)--- Python和Pytorch,Tensorflow的版本对应
  • 腾讯云创建了jenkins容器,但无法访问
  • Hadoop3.0大数据处理学习4(案例:数据清洗、数据指标统计、任务脚本封装、Sqoop导出Mysql)
  • torch张量的降维与升维
  • mac vscode 使用 clangd
  • 如何集成验证码短信API到你的应用程序
  • 使用XtraBackUp innobackupex备份数据库
  • JVM相关的面试题
  • 服务端测试开发必备技能:Mock测试