Case: Jenkins is deployed in the 192.168.95.128 server. To package and deploy the springBoot code on gitlab to the 192.168.95.129 server
jenkins creates a maven project:
1 Build the branch of the specified build through parameters
2 Specify the code address of gitlab
3 Annotate packaging commands
4 Send the jar package to the corresponding server via SSH (if you don't understand this step, you can go to my Jenkins article about uploading files to the corresponding server via SSH)
5 192.168.95.129 What the server wants to do:
5.1 Create /my_data/boot folder
5.2 Write build.sh in this folder
#操作/项目路径(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 Create Dockerfile
#基于openjdk:8
FROM openjdk:8
#创建文件夹
RUN mkdir -p /my_data/boot
# 指定当前操作目录
WORKDIR /my_data/boot
#容器启动后执行的操作
CMD java -jar boot.jar
You're done