centos 部署harbor并整合jenkins发布springboot

Harbor介绍

前面在部署项目时,我们主要采用Jenkins推送jar包到指定服务器,再通过脚本命令让目标服务器对当前jar进行部署,这种方式在项目较多时,每个目标服务器都需要将jar包制作成自定义镜像再通过docker进行启动,重复操作比较多,会降低项目部署时间。

我们可以通过Harbor作为私有的Docker镜像仓库。让Jenkins统一将项目打包并制作成Docker镜像发布到Harbor仓库中,只需要通知目标服务,让目标服务统一去Harbor仓库上拉取镜像并在本地部署即可。

Docker官方提供了Registry镜像仓库,但是Registry的功能相对简陋。Harbor是VMware公司提供的一款镜像仓库,提供了权限控制、分布式发布、强大的安全扫描与审查机制等功能

Harbor安装

这里采用原生的方式安装Harbor。

  • 下载Harbor安装包:https://github.com/goharbor/harbor/releases/download/v2.3.4/harbor-offline-installer-v2.3.4.tgz
  • 拖拽到Linux并解压:
tar -zxvf harbor-offline-installer-v2.3.4.tgz -C /usr/local/
  • 修改Harbor配置文件:

    • 首先复制一份harbor.yml配置

      cp harbor.yml.tmpl harbor.yml
      
    • 编辑harbor.yml配置文件
      在这里插入图片描述
    • 启动Harbor
    ./install.sh
    

在这里插入图片描述

发布镜像到Harbor

  • 修改镜像名称
    名称要求:harbor地址/项目名/镜像名:版本

    docker tag arthas-study:v1.0.0 192.168.56.112:80/repository/arthas-study:v1.0.0
    

    在这里插入图片描述

  • 修改daemon.json,支持Docker仓库,并重启Docker

{
  "registry-mirrors": [
    "https://dockerhub.azk8s.cn",
    "https://docker.mirrors.ustc.edu.cn",
    "https://registry.docker-cn.com"
  ],
  "insecure-registries": ["192.168.56.112:80"]
}

在这里插入图片描述

  • 设置登录仓库信息

    docker login -u admin -p Harbor12345  192.168.56.112:80
    

在这里插入图片描述

  • 推送镜像到Harbor

在这里插入图片描述
在这里插入图片描述

从Harbor拉取镜像

跟传统方式一样,不过需要先配置/etc/docker/daemon.json文件

{
  "registry-mirrors": [
    "https://dockerhub.azk8s.cn",
    "https://docker.mirrors.ustc.edu.cn",
    "https://registry.docker-cn.com"
  ],
  "insecure-registries": ["192.168.56.112:80"]
}
docker pull 192.168.56.112:80/repository/arthas-study:v1.0.0

在这里插入图片描述

Jenkins容器使用宿主机Docker

构建镜像和发布镜像到harbor都需要使用到docker命令。而在Jenkins容器内部安装Docker官方推荐直接采用宿主机带的Docker即可。

设置Jenkins容器使用宿主机Docker

  • 设置宿主机docker.sock权限:
sudo chown root:root /var/run/docker.sock
sudo chmod o+rw /var/run/docker.sock
  • 添加数据卷
version: "3.1"
services:
  jenkins:
    image: jenkins/jenkins
    container_name: jenkins
    ports:
      - 8080:8080
      - 50000:50000
    volumes:
      - ./data/:/var/jenkins_home/
      - /usr/bin/docker:/usr/bin/docker
      - /var/run/docker.sock:/var/run/docker.sock
      - /etc/docker/daemon.json:/etc/docker/daemon.json

添加构建操作

cd /var/jenkins_home/workspace/test/
git checkout $release
/var/jenkins_home/maven/bin/mvn package
mv target/*.jar docker/
docker build -t demo:$release docker/
docker login -u admin -p Harbor12345 192.168.56.112:80
docker tag demo:$release 192.168.56.112:80/repository/demo:$release
docker push 192.168.56.112:80/repository/demo:$release

在这里插入图片描述

编写部署脚本

部署项目需要通过Publish Over SSH插件,让目标服务器执行命令。为了方便一次性实现拉取镜像和启动的命令,推荐采用脚本文件的方式。

添加脚本文件到目标服务器,再通过Publish Over SSH插件让目标服务器执行脚本即可。

  • 编写脚本文件,添加到目标服务器
harbor_url=$1
harbor_project_name=$2
project_name=$3
tag=$4
port=$5
host_port=$6
imageName=$harbor_url/$harbor_project_name/$project_name:$tag

containerId=`docker ps -a | grep ${project_name} | awk '{print $1}'`
if [ "$containerId" != "" ] ; then
    docker stop $containerId
    docker rm $containerId
    echo "Delete Container Success"
fi

imageId=`docker images | grep ${project_name} | awk '{print $3}'`

if [ "$imageId" != "" ] ; then
    docker rmi -f $imageId
    echo "Delete Image Success"
fi

docker login -u root -p Harbor12345 $harbor_url

docker pull $imageName

docker run -d -p $host_port:$port --name $project_name $imageName

echo "Start Container Success"
echo $project_name

并设置权限为可执行

chmod a+x deploy.sh

在这里插入图片描述

该路径应该为/usr/bin 目录

配置构建后操作部署应用

deploy.sh 192.168.56.112:80 repository arthas-study 1.0.0 8080 8888

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 10
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值