# 操作 (Dockerfile存放的路径) BASE_PATH=/var/web # 源jar路径 SOURCE_PATH=/root/.jenkins/workspace/demo # docker 镜像名称,容器名称,这里使用相同名字 DOCKER_NAME=demo # jar 包名称 SERVER_NAME=demo-0.1-SNAPSHOT.jar # 容器id CID=$(docker ps | grep "$DOCKER_NAME" | awk '{print $1}') # 镜像id IID=$(docker images | grep "$DOCKER_NAME" | awk '{print $3}') # 构建代码,并将 jar 包和 Dockerfile 文件移动到项目环境 function transfer(){ echo "最新构建代码 $SOURCE_PATH/target/$SERVER_NAME.jar 和 Dockerfile 迁移至 $BASE_PATH ...." cp $SOURCE_PATH/target/$SERVER_NAME $BASE_PATH cp $SOURCE_PATH/Dockerfile $BASE_PATH echo "迁移完成" } # 构建docker镜像 function build(){ if [ -n "$IID" ]; then echo "存在镜像$DOCKER_NAME,IID=$IID" else echo "不存在镜像$DOCKER_NAME,开始构建镜像" cd $BASE_PATH docker build -t $DOCKER_NAME . fi } # 运行docker容器 function run(){ if [ -n "$CID" ]; then echo "存在$DOCKER_NAME容器,CID=$CID,停止并移除docker容器 ..." docker stop $DOCKER_NAME docker rm $DOCKER_NAME echo "$DOCKER_NAME容器停止并移除完成" echo "启动$DOCKER_NAME容器 ..." docker run --name $DOCKER_NAME -v $BASE_PATH:$BASE_PATH -d -p 8081:8081 $DOCKER_NAME echo "启动$DOCKER_NAME完成" else echo "不存在$DOCKER_NAME容器,docker run创建容器..." docker run --name $DOCKER_NAME -v $BASE_PATH:$BASE_PATH -d -p 8081:8081 $DOCKER_NAME echo "$DOCKER_NAME容器创建完成" fi } # 执行 transfer build run |