当前位置: 首页 > news >正文

Docker + Jenkins + Gitee 自动化部署项目

1.简介

各位看官老爷,本文为Jenkins实战,注重实际过程,阅读完会有以下收获:

  • 了解如何使用Docker安装Jenkins
  • 了解如何使用Jenkins部署maven项目
  • 了解如何使用Jenkins+Gitee实现自动化部署

2.Jenkins介绍

相信,正在读这篇文章的你,对Jenkins应该有或多或少的了解,就算没有也应该在某个地方听说过。👍

接下来,我们就一起来进行探索吧。

2.1 Jenkins是什么

Jenkins是一个开源的自动化工具,可以自动化地完成构建、测试、交付或部署等任务。总之重点就是三个字:自动化,至于如何实现这些功能,Jenkins基于插件化的机制,提供了众多的插件来完成持续集成与持续部署。

2.2 什么是持续集成与持续部署

在软件开发中经常会提到持续集成(Continuous Integration)和持续部署(Continuous Delivery),那么它们的真正意思是什么呢?

『持续集成』:当我们向代码仓库提交代码后,可以对变更进行监测,进而实现自动拉取代码、构建、测试等操作。试想一下,如果这些操作都手动进行,效率是非常低的,因而提出了持续集成。

『持续部署』:持续集成帮助我们实现了对项目的自动化构建、测试等工作,我们知道,项目最终需要部署到服务器上,在不借助Jenkins的情况下,需要我们手动将项目部署到服务器上,如果项目数量多,就会容易出现错误且效率低,而且特别麻烦,因而提出了持续部署,来实现对项目的自动化部署。

2.3 Docker 安装

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

# 启动容器 systemctl start docker

3.Docker Nexus镜像仓库

3.1拉取镜像

docker search nexus

docker pull sonatype/nexus3

3.2创建宿主机挂载目录,并设置权限

mkdir -p /mydata/docker/nexus

chown -R 755 /mydata/docker/nexus

3.3运行镜像,访问nexus

docker run -d --restart=always --name=nexus3 \
-p 8081:8081 \
-p 7070:7070 \
--privileged=true \
-e INSTALL4J_ADD_VM_PARAMS="-Xms512M -Xmx512M -XX:MaxDirectMemorySize=512M" \
-v /mydata/docker/nexus:/nexus-data \
sonatype/nexus3

访问http://IP(域名):8081/,会出现如下欢迎界面。

点击右上角登录。会提示我们去/nexus-data/admin.password中查看密码。

我们这里直接去映射的宿主机目录下查看。

cat /mydata/docker/nexus/admin.password

输入初始密码登录后,会提示设置新密码。

设置不允许匿名访问。

3.3 私服仓库配置

点击设置按钮,然后选择Repositories,可以看到默认存在了maven的仓库。

点击Create repository,进行如下配置,我们的私服仓库就搭建好了。

3.4 登录docker仓库

尝试在Jenkins服务器执行登录docker仓库的命令。

docker login -u admin -p 123456 192.168.110.101:7070

却报错了,大概意思是返回的我需要一个HTTPS,你却返回的是HTTP。

这是docker的安全机制,我们可以进行配置,让其允许客户端发送HTTP请求。

vim /etc/docker/daemon.json

修改daemon.json,并添加如下内容。

{ "insecure-registries":["192.168.110.101:7070"] }

然后重启docker。

systemctl restart docker

重新执行登录命令。如下界面表示登录成功。

记得,应用服务器也需要进行同样的操作。

4.Docker安装Jenkins

系统环境:Centos7 + Docker laster

4.1 拉取镜像

docker pull jenkins/jenkins:lts

4.2 文件夹挂载

mkdir -p /mydata/docker/jenkins

4.3 启动容器

docker run -d --restart=always --name jenkins -uroot -p 8080:8080 -p 50000:50000 \
-v /mydata/docker/jenkins:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /usr/bin/docker:/usr/bin/docker \
jenkins/jenkins:lts

说明:这里我们挂载了宿主机的/var/run/docker.sock以及/usr/bin/docker,是因为,我们后续需要在容器内执行docker相关命令

http://www.lryc.cn/news/259732.html

相关文章:

  • ChatGPT 应用开发(一)ChatGPT OpenAI API 免代理调用方式(通过 Cloudflare 的 AI Gateway)
  • 【TC3xx】GETH
  • 不需要联网的ocr项目
  • 【Git使用总结】
  • 仿照MyBatis手写一个持久层框架学习
  • 关东升老师极简系列丛书(由清华大学出版社出版)
  • 要求CHATGPT高质量回答的艺术:提示工程技术的完整指南—第 27 章:如何避开和绕过所有人工智能内容检测器
  • JavaWeb笔记之MySQL数据库
  • Amazon CodeWhisperer 开箱初体验
  • Java的引用类型有几种?区别是什么?
  • 掌握iText:轻松处理PDF文档-基础篇
  • 小红书民宿文案怎么写?建议收藏
  • C#教程(一):面向对象
  • Linux系统中部署minio服务、开启反向代理、二级域名SSL加固
  • PMP备考总结:项目管理PMP考试提高通过率,轻松上岸~
  • shell脚本中获取当前脚本的绝对路径
  • SSD基础架构与NAND IO并发问题探讨
  • 激光雷达反射率定标板如何提取障碍信息
  • 【开源】基于JAVA的桃花峪滑雪场租赁系统
  • 将VOC2012格式的数据集转为YOLOV8格式
  • DevExpress WinForms Pivot Grid组件,一个类似Excel的数据透视表控件(二)
  • 为什么越来越多的人从事软件测试行业?
  • ERP数据仓库模型
  • 基于单片机的智能小车 (论文+源码)
  • Redis和MySQL双写一致性实用解析
  • win10彻底永久关闭自动更新的方法
  • 【webpack】初始化
  • 服务器GPU占用,kill -9 PID 用不了,解决办法
  • Vue学习笔记-Vue3中的toRaw和markRaw
  • 【Android Audio Focus 音频焦点】