springboot项目打包部署shell脚本
#!/bin/bash
#1.2.3.4.5需要根据不同项目修改不同值
#1.项目名称
PROJECT_NAME=idc-mall-service
#2.服务名称
SERVICE_NAME=ims-apiserver
#3.启动dev配置文件
CONFIG_NAME=dev-inner
#4.源jar路径,mvn打包完成之后,target目录下的jar包或jar包名称(包含后缀)
JAR_NAME=$SERVICE_NAME-1.0-SNAPSHOT.jar
#5.端口
PORT=8082
echo "定义变量"
echo "项目名称:$PROJECT_NAME"
echo "服务名称:$SERVICE_NAME"
echo "打包文件:$JAR_NAME"
echo "启动配置:$CONFIG_NAME"
echo "启动端口:$PORT"
# 源jar路径
# /usr/local/jenkins_home/workspace --> jenkins工作目录
# $PROJECT_NAME/$SERVICE_NAME --> 工程目录
# target打包生成jar包的目录
JAR_PATH=/var/jenkins_home/workspace/$PROJECT_NAME/$SERVICE_NAME/target/$JAR_NAME
# Docker镜像目录, (此目录包含Dockerfile文件)
WORK_DIR=/var/jenkins_home/images/$SERVICE_NAME
# 创建Docker镜像的目录$WORK_DIR
echo "创建Docker镜像的目录$WORK_DIR"
mkdir -pv $WORK_DIR
# 在workdir文件夹下创建Dockerfile文本文件
echo "Dockerfile文件"
touch $WORK_DIR/Dockerfile
# 写入Dockerfile
echo "写入Dockerfile内容"
cat >>$WORK_DIR/Dockerfile<<EOF
#基于Java8
FROM java:8
#时区:上海
ENV TZ=Asia/Shanghai
#同步时间
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
#添加jar并解压
ADD $JAR_NAME $SERVICE_NAME
#启动
ENTRYPOINT ["java","-jar","$SERVICE_NAME","--spring.profiles.active=$CONFIG_NAME"]
EOF
# 清理Docker容器和镜像
echo "清理$SERVICE_NAME的容器"
containerId=$(docker ps -a | grep -w $SERVICE_NAME | awk '{print $1}')
if [ -n "$containerId" ];
then
docker stop $containerId
docker rm $containerId
echo "成功停止、删除容器"
fi
imageld=$(docker images | grep -w $SERVICE_NAME | awk '{print $3}')
if [ -n "$imageld" ];
then
docker rmi -f $imageld
echo "成功删除镜像"
fi
echo "清除容器和镜像完成,进入创建新镜像过程"
# 复制jar包到/images/$SERVICE_NAME目录下
echo "复制 $JAR_PATH 到 $WORK_DIR 目录"
cp $JAR_PATH $WORK_DIR
# 切换到$SERVICE_NAME目录
echo "切换到 $SERVICE_NAME 目录"
cd $WORK_DIR
# 修改文件权限
echo "修改jar文件执行权限"
chmod 755 $JAR_NAME
# 执行docker创建镜像命令
echo "执行命令创建新镜像"
docker build -t $SERVICE_NAME .
# 删除Dockerfile文件
echo "删除Dockerfile文件"
rm $WORK_DIR/Dockerfile
# 运行镜像
echo "运行镜像 $SERVICE_NAME"
docker run -d \
--name $SERVICE_NAME \
--restart=always \
-p $PORT:$PORT \
-u root \
$SERVICE_NAME
echo "运行新镜像, 流程完毕, 端口号为:$PORT"
评论 (1)