案例: 192.168.95.128 服务器内部署了jenkins 要将gitlab上的springBoot代码 打包部署到192.168.95.129服务器内
jenkins创建 maven项目:
1 通过参数构建 指定构建的分支
2 指定 gitlab的代码地址
3 标注打包命令
4 通过SSH 将 jar包发送到对应服务器内(这一步不懂可以去看我的 Jenkins通过SSH将文件上传到对应服务器的文章)
5 192.168.95.129 服务器要干的事:
5.1 创建 /my_data/boot 文件夹
5.2 在该文件夹内编写 build.sh
#操作/项目路径(Dockerfile存放的路劲)
BASE_PATH=/my_data/boot
#docker 镜像/容器名字或者jar名字 这里都命名为这个
SERVER_NAME=boot
#容器id
CID=$(docker ps | grep "$SERVER_NAME" | awk '{print $1}')
#镜像id
IID=$(docker images | grep "$SERVER_NAME" | awk '{print $3}')
DATE=`date +%Y%m%d%H%M`
# 备份
function backup(){
mkdir $BASE_PATH/backup/
if [ -f "$BASE_PATH/$SERVER_NAME.jar" ]; then
echo "$SERVER_NAME.jar 备份..."
cp $BASE_PATH/$SERVER_NAME.jar $BASE_PATH/backup/$SERVER_NAME-$DATE.jar
echo "备份 $SERVER_NAME.jar 完成"
else
echo "$BASE_PATH/$SERVER_NAME.jar不存在,跳过备份"
fi
}
# 构建docker镜像
function build(){
if [ -n "$IID" ]; then
echo "存在$SERVER_NAME镜像,IID=$IID"
else
echo "不存在$SERVER_NAME镜像,开始构建镜像"
cd $BASE_PATH
docker build -t $SERVER_NAME .
fi
}
# 运行docker容器
function run(){
backup
build
if [ -n "$CID" ]; then
echo "存在$SERVER_NAME容器,CID=$CID,重启docker容器 ..."
docker restart $SERVER_NAME
echo "$SERVER_NAME容器重启完成"
else
echo "不存在$SERVER_NAME容器,docker run创建容器..."
docker run --name $SERVER_NAME -v $BASE_PATH:$BASE_PATH -d -p 9999:9999 $SERVER_NAME
echo "$SERVER_NAME容器创建完成"
fi
}
#入口
run
5.3 创建 Dockerfile
#基于openjdk:8
FROM openjdk:8
#创建文件夹
RUN mkdir -p /my_data/boot
# 指定当前操作目录
WORKDIR /my_data/boot
#容器启动后执行的操作
CMD java -jar boot.jar
大功告成