啊我摔倒了..有没有人扶我起来学习....
👱个人主页: 《 C G o d 的 个 人 主 页 》 \color{Darkorange}{《CGod的个人主页》} 《CGod的个人主页》交个朋友叭~
💒个人社区: 《 编 程 成 神 技 术 交 流 社 区 》 \color{Darkorange}{《编程成神技术交流社区》} 《编程成神技术交流社区》加入我们,一起高效学习,收割好Offer叭~
🌱刷题链接: 《 L e e t C o d e 》 \color{Darkorange}{《LeetCode》} 《LeetCode》快速成长的渠道哦~
目录
前言
前面在部署项目时,我们主要采用Jenkins
推送jar
包到指定服务器,再通过脚本命令让目标服务器对当前jar
进行部署,这种方式在项目较多时,每个目标服务器都需要将jar
包制作成自定义镜像再通过docker
进行启动,重复操作比较多,会降低项目部署时间
8.1 Harbor介绍
我们可以通过
Harbor
作为私有的Docker
镜像仓库。让Jenkins
统一将项目打包并制作成Docker
镜像发布到Harbor
仓库中,只需要通知目标服务,让目标服务统一去Harbor
仓库上拉取镜像并在本地部署即可Docker
官方提供了Registry
镜像仓库,但是Registry
的功能相对简陋。Harbor
是VMware
公司提供的一款镜像仓库,提供了权限控制、分布式发布、强大的安全扫描与审查机制等功能
8.2 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文件
启动
Harbor
./install.sh
查看日志 登录
Harbor
登录Harbor 首页信息
首页信息
8.3 Harbor使用方式
Harbor
作为镜像仓库,主要的交互方式就是将镜像上传到Harbor
上,以及从Harbor
上下载指定镜像在传输镜像前,可以先使用Harbor
提供的权限管理,将项目设置为私有项目,并对不同用户设置不同角色,从而更方便管理镜像
8.3.1 添加用户构建项目
创建用户
创建用户 构建项目(设置为私有)
构建项目 给项目追加用户
追加用户管理 切换测试用户
切换测试用户
8.3.2 发布镜像到Harbor
修改镜像名称
名称要求:
harbor
地址/项目名/镜像名:版本修改镜像名称 修改
daemon.json
,支持Docker
仓库,并重启Docker
修改daemon.json,支持Docker仓库 设置登录仓库信息
docker login -u 用户名 -p 密码 Harbor地址
推送镜像到
Harbor
推送镜像到Harbor
8.3.3 从Harbor拉取镜像ls
跟传统方式一样,不过需要先配置/etc/docker/daemon.json文件
{
"registry-mirrors": ["https://pee6w651.mirror.aliyuncs.com"],
"insecure-registries": ["192.168.11.11:80"]
}
拉取镜像 |
---|
![]() |
8.3.4 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
8.3.5 添加构建操作
制作自定义镜像 |
---|
![]() |
8.3.6 编写部署脚本
部署项目需要通过Publish Over SSH
插件,让目标服务器执行命令。为了方便一次性实现拉取镜像和启动的命令,推荐采用脚本文件的方式添加脚本文件到目标服务器,再通过Publish Over SSH
插件让目标服务器执行脚本即可
编写脚本文件,添加到目标服务器
harbor_url=$1 harbor_project_name=$2 project_name=$3 tag=$4 port=$5 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 DevOps -p P@ssw0rd $harbor_url docker pull $imageName docker run -d -p $port:$port --name $project_name $imageName echo "Start Container Success" echo $project_name
并设置权限为可执行
chmod a+x deploy.sh
如图
8.3.7 配置构建后操作
执行脚本文件 |
---|
![]() |