Jenkins利用阿里镜像仓库部署springboot应用

Jenkins利用阿里镜像仓库部署springboot应用

  • 一、本次目标
  • 二、环境准备
  • 三、jenkins创建项目
    • 1、添加全局配置参数,这里我配置了版本号信息
    • 2、源码配置
    • 3、maven打包&docker镜像包生成
    • 4、远程机器执行部署脚本
  • 四、构建
  • 五、访问测试

一、本次目标

使用jenkins将gitee代码库中的代码编译后打成docker镜像包并发布到阿里云个人镜像仓库,之后在远程服务部署该镜像包

二、环境准备

阿里云镜像仓库
登陆阿里云查找“容器镜像服务”
Jenkins利用阿里镜像仓库部署springboot应用_第1张图片
进入容器镜像服务
Jenkins利用阿里镜像仓库部署springboot应用_第2张图片
我们需要在jenkins所在的机器上进行授权,否则编译打包好的docker镜像无法推送至阿里的镜像仓库中,可以参考下文
docker推送镜像至阿里私有镜像仓库
进入到个人实例
Jenkins利用阿里镜像仓库部署springboot应用_第3张图片

# 登陆授权
docker login --username=自己的用户名 registry.cn-hangzhou.aliyuncs.com
# 取消授权
docker logout registry.cn-hangzhou.aliyuncs.com

Jenkins利用阿里镜像仓库部署springboot应用_第4张图片

授权完成之后我们就可以正常向阿里镜像仓库推送docker镜像文件了。

三、jenkins创建项目

1、添加全局配置参数,这里我配置了版本号信息

Jenkins利用阿里镜像仓库部署springboot应用_第5张图片

2、源码配置

Jenkins利用阿里镜像仓库部署springboot应用_第6张图片

3、maven打包&docker镜像包生成

Jenkins利用阿里镜像仓库部署springboot应用_第7张图片

4、远程机器执行部署脚本

Jenkins利用阿里镜像仓库部署springboot应用_第8张图片
完整的配置信息如下图
Jenkins利用阿里镜像仓库部署springboot应用_第9张图片
本次部署涉及到几个重要的脚本如下:
Dockerfile文件内容如下:

# 该镜像需要依赖的基础镜像
FROM java:8
# 指定维护者的名字
MAINTAINER zhanghang
VOLUME /tmp
RUN echo "export LC_ALL=zh_CN.UTF-8"  >>  /etc/profile
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# 将当前目录下的jar包复制到docker容器的/目录下
ADD ./target/button_swagger.jar button_swagger.jar
RUN bash -c 'touch /button_swagger.jar'

expose 8099
# 指定docker容器启动时运行jar包
ENTRYPOINT ["java","-jar","/button_swagger.jar"]

deploy.sh脚本内容如下:

#!/bin/bash
version=$1
imagename=button-swagger
container=button-swagger
docker build -t button-swagger:$version .
docker tag button-swagger:$version registry.cn-hangzhou.aliyuncs.com/zhanghangns/button-swagger:$version
docker push registry.cn-hangzhou.aliyuncs.com/zhanghangns/button-swagger:$version
echo "执行docker images"
docker images 
echo "----开始删除本地镜像----"
docker rmi button-swagger:$version
docker rmi registry.cn-hangzhou.aliyuncs.com/zhanghangns/button-swagger:$version
echo "----删除本地镜像完成----"

button-swagger.sh脚本内容如下:

#!/bin/bash
version=$1
imagename=button-swagger
container=button-swagger
echo "远程机器执行docker ps"
docker ps 
if [[ "$(docker inspect $container 2> /dev/null | grep $container)" != "" ]]; 
then 
  echo $container "容器存在,停止并删除"
  echo "docker stop" $container
  docker stop $container
  echo "docker rm" $container
  docker rm $container
else 
  echo $container "容器不存在"
fi
# 删除镜像
echo "远程机器执行docker images"
docker images 
if [[ "$(docker images -q $imagesname 2> /dev/null)" != "" ]]; 
then 
  echo $imagesname '镜像存在,删除它'
  docker rmi $(docker images -q $imagesname 2> /dev/null)
else 
  echo $imagesname '不存在'
fi
docker pull registry.cn-hangzhou.aliyuncs.com/zhanghangns/button-swagger:$version
docker run -d --name button-swagger -p 8099:8099 registry.cn-hangzhou.aliyuncs.com/zhanghangns/button-swagger:$version

四、构建

Jenkins利用阿里镜像仓库部署springboot应用_第10张图片
查看部署log
Jenkins利用阿里镜像仓库部署springboot应用_第11张图片

五、访问测试

http://ip:port/swagger-ui.html#/
Jenkins利用阿里镜像仓库部署springboot应用_第12张图片

你可能感兴趣的:(Jenkins,jenkins,spring,boot,docker,阿里)