乐趣区

关于linux:Springboot-docker-jenkins-自动化部署并上传镜像

阿里云开源镜像站:
https://developer.aliyun.com/mirror/?utm_content=g_1000303593

springboot + docker + jenkins 自动化部署我的项目,jenkins、mysql、redis 都是 docker 运行的,并且没有应用虚拟机,就在阿里云服务器(centos7)运行

1、后期筹备工作不说了

2、在我的项目根目录下新建 Dockerfile

Dockerfile 文件内容为:

# 根底镜像
FROM openjdk:12
#作者
MAINTAINER demo <demo@qq.com>
VOLUME /tmp
#指定配置文件,以及 jar 包在服务器上的门路
ENTRYPOINT ["java","-Dspring.profiles.active=prod","-jar","/lcy/work/tools/tools.jar"]
#裸露端口
EXPOSE 8092

3、在服务器找个目录新建一个.sh 文件

#!/bin/sh
echo '================ 开始构建镜像 =============='
#镜像名称
IMAGE_NAME='registry.cn-beijing.aliyuncs.com/???/tools'
#打包后在 jenkins 的地址
SOURCE_PATH='/lcy/jenkins/workspace/tools'
#Dockerfile 执行 jar 包的地址
BASE_PATH='/lcy/work/tools'
echo IMAGE_NAME=$IMAGE_NAME
echo '================ 复制 JAR 包 ==================='
echo $SOURCE_PATH/target/tools-0.0.1-SNAPSHOT.jar
cp $SOURCE_PATH/target/tools-0.0.1-SNAPSHOT.jar $BASE_PATH/tools.jar
chmod -R 777 $BASE_PATH/tools.jar
echo '================ 复制实现 ===================='
echo '================ 以后 docker 版本 =============='
docker -v
echo '================ 构建镜像开始 ================'
docker build -t $IMAGE_NAME -f $SOURCE_PATH/Dockerfile .
echo '================ 构建镜像完结 ================'
#输出要推送镜像的地址,依据镜像仓库提醒的地址复制
echo '================ 推送镜像开始 ================'
docker login --username=??? --password=??? registry-vpc.cn-beijing.aliyuncs.com
docker push $IMAGE_NAME
echo '================ 推送镜像完结 ================'
echo '================ 获取容器 id=================='
CID=$(docker ps | grep "$IMAGE_NAME" | awk '{print $1}')
echo 容器 id=$CID
echo '================ 获取镜像 id=================='
IID=$(docker images | grep "$IMAGE_NAME" | awk '{print $3}')
echo 镜像 id=$IID
if [-n "$CID"]; then
    echo 存在 $IMAGE_NAME 容器, 进行容器并删除
    docker stop tools
    docker rm tools
else
    echo 不存在 $IMAGE_NAME 容器, 开始启动
    docker run -p 8092:8092 -d --name tools -v $BASE_PATH:$BASE_PATH $IMAGE_NAME
fi

4、配置 jenkins,执行新建的.sh 文件(记得给好权限)其它的配置就不说了,比方 github 的配置

5、运行后果

退出移动版