https://www.jianshu.com/p/0391e225e4a6
https://www.cnblogs.com/ming-blogs/p/10903408.html
jenkins-docker:构建后执行shell脚本(代码迁移 备份 镜像打包 启动容器)
#!/bin/bash -ile
#操作/项目路径(Dockerfile存放的路劲)
BASE_PATH=/var/lib/jenkins/workspace/site_dev/docker
# 源war路径
SOURCE_PATH=/var/lib/jenkins/workspace
#docker 镜像/容器名字或者war名字 这里都命名为这个
SERVER_NAME=lcz_live-0.0.1-SNAPSHOT
#镜像名称
IMAGE_NAME=site_dev
#SpringBoot 服务名称
SERVER_PATH=site_dev
#容器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 transfer(){
echo "最新构建代码 $SOURCE_PATH/$SERVER_PATH/target/$SERVER_NAME.war 迁移至 $BASE_PATH ...."
cp $SOURCE_PATH/$SERVER_PATH/target/$SERVER_NAME.war $BASE_PATH/$SERVER_NAME.war
echo "迁移完成"
}
# 备份
function backup(){
if [ -f "$BASE_PATH/$SERVER_NAME.war" ]; then
echo "$SERVER_NAME.war 备份..."
cp $BASE_PATH/$SERVER_NAME.war $BASE_PATH/backup/$SERVER_NAME-$DATE.war
echo "备份 $SERVER_NAME.war 完成"
else
echo "$BASE_PATH/$SERVER_NAME.war不存在,跳过备份"
fi
}
# 构建docker镜像
function build(){
if [ -n "$IID" ]; then
echo "存在 $IMAGE_NAME 镜像,IID=$IID"
else
echo "不存在 $IMAGE_NAME 镜像,开始构建镜像"
cd $BASE_PATH
docker build -t $IMAGE_NAME .
fi
}
# 运行docker容器
function run(){
backup
transfer
build
if [ -n "$CID" ]; then
echo "存在 $IMAGE_NAME 容器,CID=$CID,重启docker容器 ..."
docker restart $IMAGE_NAME
echo "$IMAGE_NAME 容器重启完成"
else
echo "不存在 $IMAGE_NAME 容器,docker run创建容器..."
docker run --name $IMAGE_NAME -v $BASE_PATH:$BASE_PATH -d -p 8888:8888 $IMAGE_NAME
echo "$IMAGE_NAME 容器创建完成"
fi
}
#入口
run
docker 运行 rabbitMQ
docker run -dit --name rabbitmq -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin -p 15672:15672 -p 5672:5672 rabbitmq:management