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

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权限
shell 复制代码
sudo chown root:root /var/run/docker.sock
sudo chmod o+rw /var/run/docker.sock


1.2 添加数据卷

shell 复制代码
cd /usr/local/docker/jenkins_docker
vi docker-compose.yml
shell 复制代码
version: "3.1"
services:
 jenkins:
  image: jenkins/jenkins
  container_name: jenkins
  ports:
   - 8080:8080
   - 50000:50000
  volumes:
   - ./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容器

shell 复制代码
docker-compose up -d

1.3 添加构建操作

shell 复制代码
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 编写脚本文件,添加到目标服务器

shell 复制代码
vi deploy.sh

脚本 deploy.sh

shell 复制代码
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

2.2 设置权限为可执行

shell 复制代码
chmod a+x deploy.sh

2.3 测试脚本

2.4 将脚本移到PATH目录下

shell 复制代码
ls
echo $PATH
mv deploy.sh /usr/bin

2.5 Jenkins配置

增加构建后操作

shell 复制代码
deploy.sh 192.168.43.141:80 repo ${JOB_NAME} $tag 8081


2.6 构建

  • 构建前将镜像mytest:v4.0.0删除
  • 构建后
  • 浏览器访问
相关推荐
聚美智数6 小时前
智能结构化识别-图片结构解析-图像结构化解析-照片结构化解析
android·java·数据库
十年Java程序媛6 小时前
Java枚举Enum完整教程|替代静态常量,开发与面试要点
java·开发语言·spring boot·后端·面试
JavaPub-rodert6 小时前
Docker 日志为什么能把磁盘写爆?讲透 json-file、local、journald、日志轮转与 docker logs
docker·eureka·json
我是人✓6 小时前
SpringBoot静态资源映射揭秘
java·spring boot·后端
土豆.exe7 小时前
nf_tables 的 verdict 被读了两次:一个十年未闭合的位域错配
java·数据库·网络安全·缓存
人生匆匆7 小时前
docker部署ceph集群
ceph·docker·容器
小坏讲微服务8 小时前
刚发布一个月的JDK 27,为什么我建议你立刻升级?
java·开发语言·spring boot·spring·架构·求职招聘·springboot4
kunicoding8 小时前
多线程编程核心概念详解:从线程基础到并发安全
java·jvm·安全
snow@li9 小时前
SpringBoot:核心注解全景梳理 / @xxx 叫“注解”(Annotation)
java·spring
devilnumber9 小时前
避坑_IDEA 提取方法(Extract Method)工具
java·ide·intellij-idea