Jenkins容器使用宿主机Docker(五)

server/2024/12/17 2:03:47/

DevOps之安装和配置 Jenkins (一)
DevOps 之 CI/CD入门操作 (二)
Sonar Qube介绍和安装(三)
Harbor镜像仓库介绍&安装 (四)
Jenkins容器使用宿主机Docker(五)
Jenkins流水线初体验(六)

一、Jenkins制作自定义镜像并推送到Harbor镜像仓库

上一篇章讲到了Harbor镜像仓库的使用,构建镜像和发布镜像到Harbor都需要使用到docker命令。而在Jenkins容器内部安装Docker官方推荐直接采用宿主机带的Docker即可

1.1 Jenkins容器使用宿主机Docker

  • 设置Jenkins容器使用宿主机Docker
  • 设置宿主机docker.sock权限
sudo chown root:root /var/run/docker.sock
sudo chmod o+rw /var/run/docker.sock

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

1.2 添加数据卷

cd /usr/local/docker/jenkins_docker
vi docker-compose.yml
version: "3.1"
services:jenkins:image: jenkins/jenkinscontainer_name: jenkinsports:- 8080:8080- 50000:50000volumes:- ./data/:/var/jenkins_home/- /var/run/docker.sock:/var/run/docker.sock- /usr/bin/docker:/usr/bin/docker- /etc/docker/daemon.json:/etc/docker/daemon.json

在这里插入图片描述
在这里插入图片描述
重启Jenkins容器

docker-compose up -d

在这里插入图片描述

1.3 添加构建操作

docker build -t mytest:$tag docker/
docker login -u admin -p Harbor12345 192.168.43.141:80
docker tag mytest:$tag 192.168.43.141:80/repo/mytest:$tag
docker push 192.168.43.141:80/repo/mytest:$tag

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

1.4 测试

  • 1.4.1 修改代码并推送到GitLab

在这里插入图片描述

  • GitLab新建tag:v4.0.0

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

  • Jenkins 构建 v4.0.0

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

  • 查看Harbor镜像仓库
    mytest:v4.0.0镜像已经成功推送到仓库

在这里插入图片描述

二、目标服务器拉取镜像

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

2.1 编写脚本文件,添加到目标服务器

vi deploy.sh

在这里插入图片描述

脚本 deploy.sh

harbor_url=$1
harbor_project_name=$2
project_name=$3
tag=$4
port=$5imageName=$harbor_url/$harbor_project_name/$project_name:$tagcontainerId=`docker ps -a | grep ${project_name} | awk '{print $1}'`
if [ "$containerId" != "" ] ; thendocker stop $containerIddocker rm $containerIdecho "Delete Container Success"
fiimageId=`docker images | grep ${project_name} | awk '{print $3}'`
if [ "$imageId" != "" ] ; thendocker rmi -f $imageIdecho "Delete Image Success"
fidocker 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

2.2 设置权限为可执行

chmod a+x deploy.sh

2.3 测试脚本

在这里插入图片描述

2.4 将脚本移到PATH目录下

在这里插入图片描述

ls
echo $PATH
mv deploy.sh /usr/bin

2.5 Jenkins配置

增加构建后操作

deploy.sh 192.168.43.141:80 repo ${JOB_NAME} $tag 8081

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

2.6 构建

  • 构建前将镜像mytest:v4.0.0删除

在这里插入图片描述

  • 构建后

在这里插入图片描述

  • 浏览器访问

在这里插入图片描述


http://www.ppmy.cn/server/150775.html

相关文章

02. Docker:安装和操作

目录 一、Docker的安装方式 1、实验环境准备 1.1 关闭防火墙 1.2 可以访问网络 1.3 配置yum源 2、yum安装docker 2.1 安装docker服务 2.2 配置镜像加速 2.3 启动docker服务 3、二进制安装docker 3.1 下载或上传安装包并解压 3.2 配置使用systemctl管理 3.3 配置镜像…

SpringBoot 手动实现动态切换数据源 DynamicSource (中)

大家好,我是此林。 SpringBoot 手动实现动态切换数据源 DynamicSource (上)-CSDN博客 在上一篇博客中,我带大家手动实现了一个简易版的数据源切换实现,方便大家理解数据源切换的原理。今天我们来介绍一个开源的数据源…

QTreeView 与 QTreeWidget 例子

1. 先举个例子 1班有3个学生:张三、李四、王五 4个学生属性:语文 数学 英语 性别。 语文 数学 英语使用QDoubleSpinBox* 编辑,范围为0到100,1位小数 性别使用QComboBox* 编辑,选项为:男、女 实现效果: 2…

Scala的正则表达式3

贪婪模式与非贪婪模式 object test { //正则表达式 def main(args: Array[String]): Unit { // 贪婪模式 // 正则匹配默认是贪婪模式的 // ? 非贪婪模式,加在量词的后面 //在如下字符串中 查找 满足正则表达式要求的内容 // 找全部的手机号 // 规则: // 1.11位数…

scala列表

1 不可变 List 说明 (1)List 默认为不可变集合 (2)创建一个 List(数据有顺序,可重复) (3)遍历 List (4)List 增加数据 (5&#…

数据库系统原理 第六章 关系数据库的规范化理论

文章目录 1.问题的提出1.1概念回顾1.2.关系模式的形式化定义1.3.什么是数据依赖1.4.数据依赖对关系模式的影响 2.规范化2.1函数依赖2.2码2.3.范式(Normal-Form) 3.数据依赖的公理系统3.1ArmStrong公理系统3.2闭包3.3计算关系R的属性集X的闭包的步骤如下3.4候选码求解理论与算法…

20分钟入门solidity(1)

1. Solidity简介 Solidity是一种静态类型编程语言,专门用于在以太坊区块链上编写智能合约。它借鉴了JavaScript、Python和C的语法,非常适合开发在以太坊虚拟机(EVM)上运行的应用程序。 智能合约:表达商业、法律关系的…

17.Java 正则表达式(正则表达式底层实现、元字符、正则表达式常用类)

一、正则表达式引入 1、概述 正则表达式(regular expression,简称 RegExp)是处理文本的利器,是对字符串执行模式匹配的技术 例如,使用传统方式提取内容中的所有英文单词就要使用遍历,代码量大&#xff0c…