五.docker+jenkins自动部署项目

这篇具有很好参考价值的文章主要介绍了五.docker+jenkins自动部署项目。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一.敏捷开发相关概念

1.微服务的痛点

再来看一下我们的微服务架构 , 每个组件都需要服务器去部署,加起来可能需要几十个甚至上百个服务器。docker容器使用jenkins部署web项目,《一起来部署项目》,jenkins,运维这样的微服务项目在部署上会遇到什么问题?

  • 需要很多很多的服务器,服务器的采购安装,布线都很麻烦
  • 每个服务都需要:编译,构建,打包,测试,发布,运维重复的工作量重复做
  • 操作麻烦(编译,打包,测试,发布,上线等等都很麻烦)
2.什么是DevOps

问题:软件的迭代过程包括,设计,编码,编译,构建,测试,发布,运维等等流程,早期的软件开发模式为瀑布式开发,这种开发模式迭代更新太慢,每个环境都需要耗费大量人力和时间成本。往往很长时间才迭代一次。如今企业追求的都是敏捷开发:快速开发快速迭代,尽可能的缩短软件的开发生命周期。
DevOps 强调的是高效组织团队之间如何通过自动化的工具协作和沟通来完成软件的生命周期管理,从而更快、更频繁地交付更稳定的软件。
DevOps是一种方法或理念,它涵盖开发、测试、运维的整个过程。DevOps是提高软件开发、测试、运维、运营 等各部门的沟通与协作质量的方法和过程,DevOps强调软件开发人员与软件测试、软件运维、质量保障(QA)部 门之间有效的沟通与协作,强调通过自动化的方法去管理软件变更、软件集成,使软件从构建到测试、发布更加快 捷、可靠,最终按时交付软件。

DevOps是一套项目从开发到运维的解决方案,而不是具体的一个技术,DevOps需要整合一些列的技术来实现,比如:通过Git拉取代码,通过Mavn的命令进行项目的清理,编译,打包,测试等,通过Docker命令进行镜像构建…。
DevOps使用到的技术如:GitHub、Git/SVN、Docker、Jenkins、 Hudson、Ant/Maven/Gradle(编译,打包)、Selenium(自动化测试)、QUnit、JMeter(性能测试)等
docker容器使用jenkins部署web项目,《一起来部署项目》,jenkins,运维
下面普及2个概念

  • CI : Continuous Intergration : 持续集成 ,持续交付的核心意义:尽快的将最终的产品发布到线上环境,给用户使用。持续交付是每个企业追求的目标,我们常说的CI/CD里的CD一般指的就是持续交付
  • CD:Continuous Deployment :持续部署就是在持续交付的基础上,将编译、测试、打包部署到生产环境的过程做成自动化。
3.什么是敏捷开发

传统的瀑布式开发模型要求一个项目版本的所有功能都开发完成才会进行版本地迭代,这种开发模式不仅项目版本迭代速度慢,没法尽早的发现软件的质量问题,和持续的项目交付。
而敏捷开发最重要的目标是通过及早和持续不断地交付有价值的软件使客户满意;要达到这一目的就需要更高频率的版本迭代,包括:编译,打包,测试,运维。且应该自动化的完成,才有可能达到更快的软件开发生命周期。
敏捷与 DevOps 之间的主要区别在于:敏捷是关于如何开发和交付软件的哲学,而 DevOps 则描述了如何通过使用现代工具和自动化流程来持续部署代码。

4.什么是云原生

云原生的定义最早也是由 Pivotal 公司的 Matt Stine 于 2013 年提出的,云原生是基于分布部署和统一运管的分布式云 [1] ,以容器、微服务、DevOps等技术为基础建立的一套云技术产品体系。 它具有:**DevOps、持续交付、微服务、容器、**等特点 。
云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式 API。这些技术能够构建容错性好、易于管理和便于观察的松耦合系统。结合可靠的自动化手段,云原生技术使工程师能够轻松地对系统做出频繁和可预测的重大变更。

5.什么是jenkins

Jenkins是一个开源的、可扩展的持续集成、交付、部署(软件/代码的编译、打包、部署)的基于web界面的平台。
起源于Hudson(Hudson是商用的),主要用于持续、自动的构建/测试软件项目、监控外部任务的运行(这个比较抽象,暂且写上,不做解释)。
允许持续集成和持续交付项目,无论用的是什么平台,可以处理任何类型的构建或持续集成。
它可以在代码上传仓库(如github,gitee,gitlab)后,在jenkins(一个网站界面)中通过获取代码仓库中最新代码,进行自动化部署,而省去手动打包、上传服务器、部署这一系列步骤,非常方便。

Jenkins的特性

  • 开源的java语言开发持续集成工具,支持CI,CD;
  • 易于安装部署配置:可通过yum安装,或下载war包以及通过docker容器等快速实现安装部署,可方便web界面配置管理;
  • 消息通知及测试报告:集成RSS/E-mail通过RSS发布构建结果或当构建完成时通过e-mail通知,生成JUnit/TestNG测试报告;
  • 分布式构建:支持Jenkins能够让多台计算机一起构建/测试;
  • 文件识别:Jenkins能够跟踪哪次构建生成哪些jar,哪次构建使用哪个版本的jar等;
  • 丰富的插件支持:支持扩展插件,你可以开发适合自己团队使用的工具,如git,svn,maven,docker等。

二.Jenkins安装

1.方案设计

现在我们已经有docker的环境了,可以用来部署项目,现在我们只需要使用Jenkins实现一键部署即可,整体方案如下
docker容器使用jenkins部署web项目,《一起来部署项目》,jenkins,运维

  • 在和安装了docker的服务器上安装好jenkins
  • 程序员把代码提交到远程 git 仓库,jenkins可以自动从git仓库拉取代码到本地
  • jenkins安装好maven和jdk,然后执行 package 对代码进行打包如:app.jar
  • jenkins执行事先准备好的Dockerfile脚本构建docker镜像
  • jenkins执行shell脚本,根据镜像启动容器

上面的问题是安装docker和安装jenkins的服务器是同一个服务器,或者这样:
docker容器使用jenkins部署web项目,《一起来部署项目》,jenkins,运维

  • 在服务器上安装好jenkins
  • 程序员把代码提交到远程 git 仓库,jenkins可以自动从git仓库拉取代码到本地
  • jenkins安装好maven和jdk,然后执行 package 对代码进行打包如:app.jar
  • jenkins执行事先准备好的Dockerfile脚本构建docker镜像
  • jenkins把docker镜像推送到镜像仓库
  • 安装了k8s的服务器,从docker镜像仓库中拉取镜像然后启动容器
2.安装jenkins

准备jenkins映射的目录

#创建jenkins文件映射目录
mkdir /var/jenkins_home

#给目录设置权限
chmod 777 /var/jenkins_home   

执行下面命令启动jenkins容器

docker run --privileged -d --name jenkins -p 9999:8080 -p 8888:8888 -p 50000:50000 \
-v /var/jenkins_home:/var/jenkins_home  \
-v /var/run/docker.sock:/var/run/docker.sock  \
-v $(which docker):/bin/docker jenkins/jenkins:latest-jdk17
  • -d : 后台运行
  • -p 8088:8080 : 将容器的8080端口映射到宿主的8088端口
  • -v /var/jenkins_home:/var/jenkins_home : 将容器中/var/jenkins_home的目录挂载到宿主的/mnt/jenkins_home
  • -v $(which docker):/bin/docker : 将宿主的docker目录映射到容器内,以便在容器中能使用docker对应的命令完成自动化部署

上面的操作已经将docker相互映射,但在jenkins容器中直接执行docker的命令时,可能会报权限不足。这个问题是容器中的docker是通过docker.sock的方式与宿主的docker通信的,其对应的可执行用户为root。此时我们可以将 /var/run/docker.sock 的权限放开来解决此问题

chmod 777 /var/run/docker.sock

然后在linux机器的 /usr/local/src/jdk 目录安装好JDK, 以及在 /usr/local/src/maven 目录安装好maven 请注意版本

3.jenkins初始化

更改jenkins插件下载地址,因为默认是去国外网站下载插件比较慢,而且容易下载失败,我们修改插件下载地址为国内地址

cd /var/jenkins_home

vi hudson.model.UpdateCenter.xml

修改地址为下面的地址

https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

然后重启jenkins : docker restart jenkins

浏览器访问:http://服务IP:9999/ ,进入jenkins初始化页面
docker容器使用jenkins部署web项目,《一起来部署项目》,jenkins,运维
可以通过:docker logs jenkins 来查看密码 ,输入密码后,选择:安装推荐的插件

docker容器使用jenkins部署web项目,《一起来部署项目》,jenkins,运维

耐心等待安装完成进入下面界面,你可以创建一个新的管理员,或者使用admin账户继续
docker容器使用jenkins部署web项目,《一起来部署项目》,jenkins,运维
后面就一直下一步就可以了,安装完成后界面如下

4.安装插件

根据推荐安装好插件后,还需安装一个maven 插件,登录jenkins,找到插件管理
docker容器使用jenkins部署web项目,《一起来部署项目》,jenkins,运维
然后在可用插件一栏中,搜索:Maven Integration 插件进行安装
docker容器使用jenkins部署web项目,《一起来部署项目》,jenkins,运维

5.全局工具配置

接下来我们对maven做配置,找到 manager jenkins - tools
docker容器使用jenkins部署web项目,《一起来部署项目》,jenkins,运维
进去后,找到最下边的maven ,选择自动安装,如下
docker容器使用jenkins部署web项目,《一起来部署项目》,jenkins,运维
注意:如果采用jenkins自动安装方式可能会安装不上,我们可以自己解压一个maven到 -v 的目录中,然后设置好权限,比如:我上传了一个maven到linux中,然后他会自动同步到容器中去docker容器使用jenkins部署web项目,《一起来部署项目》,jenkins,运维
然后设置权限

chmod -R 777 /var/jenkins_home/tools/hudson.tasks.Maven_MavenInstallation/apache-maven-3.9.4

然后在全局工具设置出不要使用自动安装,而是指向上传的maven home.
docker容器使用jenkins部署web项目,《一起来部署项目》,jenkins,运维
然后保存退出即可

三.构建项目

1.项目导入插件

给要部署的项目安装好打包插件,并指定项目的名字如:

  • 打包后项目名为: app.jar
<build>
    <finalName>app</finalName>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
        <!--docker的maven插件,官网: https://github.com/spotify/docker‐maven‐plugin-->
    </plugins>
</build>

同时在项目根目录准备一个Dockerfile文件,内容如下

  • 大概的意思是就是基于Dockerfile把项目打包成docker镜像,并随着容器启动自动启动项目
FROM meddream/jdk17:latest
VOLUME /tmp
ADD ./target/app.jar /app.jar
ENV TZ=Asia/Shanghai
EXPOSE 10010
#CMD java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar app.jar
ENTRYPOINT ["java", "-jar ", "/app.jar","--spring.profiles.active=prod"]
2.代码推送到远程

然后需要准备一个远程Git仓库,企业内部可能会选择搭建自己的Git私服,我这里就直接使用Gitee,把代码提送上去,如:
docker容器使用jenkins部署web项目,《一起来部署项目》,jenkins,运维

3.构建项目

回到jenkins的最外层 - 点击 新建 item
docker容器使用jenkins部署web项目,《一起来部署项目》,jenkins,运维
选择构建一个自由软件 - 指定构建的项目名 ,拉后确定
docker容器使用jenkins部署web项目,《一起来部署项目》,jenkins,运维
进去之后,找到 源码管理 - 指定你的代码仓库地址 ,以及添加账号
docker容器使用jenkins部署web项目,《一起来部署项目》,jenkins,运维
填好之后往下滚动,找到构建环境 - 选择调用顶层Maven目标
docker容器使用jenkins部署web项目,《一起来部署项目》,jenkins,运维
然后指定maven版本和目标: clean install -Dmaven.test.skip=true 该命令是对项目进行打包
docker容器使用jenkins部署web项目,《一起来部署项目》,jenkins,运维
点击保存退出,然后点击立即构建 - 查看构建日志
docker容器使用jenkins部署web项目,《一起来部署项目》,jenkins,运维
日志如下 - jenkins从尝试安装maven,然后从git下载代码后,进行 : clean install -Dmaven.test.skip=true 命令执行
docker容器使用jenkins部署web项目,《一起来部署项目》,jenkins,运维

4.启动项目容器

启动项目的原理是通过Dockerfile构建项目镜像,并自动启动容器 ,因为我们项目和jenkins在同一台服务器,所以我们用shell脚本运行项目,原理既是通过dockerfile 打包镜像,然后docker运行即可。接下来我们,修改jenkins任务配置 -
docker容器使用jenkins部署web项目,《一起来部署项目》,jenkins,运维
shell脚本如下:

  • 注意: 这个 install 目录和构建jenins项目时取的名字保持一样
cd /var/jenkins_home/workspace/gateway/it-drive-service-gateway
docker stop drive-gateway || true
docker rm drive-gateway || true
docker rmi drive-gateway || true
docker build -t drive-gateway .
docker run -id -p 10010:10010 --name drive-gateway drive-gateway:latest

解释:

  1. /var/jenkins_home/workspace/gateway/it-drive-service-gateway :是jenkins拉取的代码目录
  2. 当执行jenins项目构建,jenkins会执行install把我们的代码打包为jar
  3. 然后执行上面脚本,脚本通过docker file 来构建镜像并启动容器

docker容器使用jenkins部署web项目,《一起来部署项目》,jenkins,运维
然后执行构建,效果如下
docker容器使用jenkins部署web项目,《一起来部署项目》,jenkins,运维
然后回到docker,执行:docker ps 查看容器

为了方便理解,下面整理了一个流程图
docker容器使用jenkins部署web项目,《一起来部署项目》,jenkins,运维文章来源地址https://www.toymoban.com/news/detail-771868.html

  1. 程序员吧IDEA的代码推送到GIT远程仓库
  2. Jenkins通过Git客户端从Git仓库中拉取最新的代码
  3. Jenkins执行maven命令打包项目:clean install
  4. Jenkins执行脚本,cd到代码目录,执行docker build,根据Dockerfile 构建镜像
  5. 执行脚本 docker run 启动容器

到了这里,关于五.docker+jenkins自动部署项目的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Jenkins+Docker 实现一键自动化部署项目

    1.安装Jenkins 注:因为Jenkins容器里的用户是Jenkins,而主机用户不是Jenkins,就算是root也一样会报错:/var/jenkins_home/copy_reference_file.log: Permission denied,这个时候就需要在主机上面给主机地址赋予访问Jenkins容器的权限,Jenkins内部用的是uid 1000的user。 -privileged=true让容器具有root权限

    2024年02月16日
    浏览(38)
  • Docker + Jenkins 自动化部署若依项目

    前言 对着此文章操作之前,确保服务器上的Java环境(JDK、MySQL、Redis、Jenkins以及Linux安装Maven)已经装好,如果没有装好,参考我之前的文章。 注意: 如果服务器上自己装的又 Nginx ,需要手动停了,要不会导致80端口被占用 1:首先,到若依官网拉去若依分离版项目 2:拉完之后

    2024年04月16日
    浏览(40)
  • Docker+Jenkins+Gitee自动化部署maven项目

    各位看官老爷,本文为Jenkins实战,注重实际过程,阅读完会有以下收获: 了解如何使用Docker安装Jenkins 了解如何使用Jenkins部署maven项目 了解如何使用Jenkins+Gitee实现自动化部署 相信,正在读这篇文章的你,对Jenkins应该有或多或少的了解,就算没有也应该在某个地方听说过。👍

    2024年02月07日
    浏览(223)
  • jenkins+docker实现可持续自动化部署springboot项目

    目录 一、前言 二、微服务带来的挑战 2.1 微服务有哪些问题

    2024年04月15日
    浏览(66)
  • Jenkins+Docker 实现一键自动化部署项目!步骤齐全,少走坑路

    大家好,我是互联网架构师! 本文章实现最简单全面的Jenkins+docker+springboot 一键自动部署项目,步骤齐全,少走坑路。 环境 :centos7+git(gitee) 简述实现步骤:在docker安装jenkins,配置jenkins基本信息,利用Dockerfile和shell脚本实现项目自动拉取打包并运行。 docker 安装社区版本CE

    2024年02月09日
    浏览(35)
  • docker部署jenkins且jenkins中使用docker去部署项目

    2.346.1是最后一个支持jdk8的 在这个目录中新增data文件夹,注意data是用来跟docker中的文件进行映射的 docker-compose.yml docker-compose up -d 安装插件,如果插件失败,在这里面去修改 https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json jdk地址: https://repo.huaweicloud.com/java/jdk/8u202-b

    2024年02月13日
    浏览(33)
  • 使用Jenkins自动部署vue项目

    1、Jenkins简介 Jenkins是开源CICD软件领导者, 提供超过1000个插件来支持构建、部署、自动化, 满足任何项目的需要。 2、Jenkins安装 这里是使用docker-compose安装Jenkins,所以需要先安装docker和docker-compose 2.1、docker安装 2.2、docker-compose安装 2.3、Jenkins安装 创建docker-compose.yaml文件 创

    2024年02月06日
    浏览(31)
  • Gitee+Jenkins(docker版)自动推送并部署Springboot项目到远程服务器

    如果要参考gitlab配置请参考Gitlab+Webhook自动推送并更新Springboot项目 Gitlab的配置部分 Jenkins服务器(Centos7.6): docker安装的jenkins,参考Jenkins(docker安装)部署Springboot项目 JDK1.8 Maven3.6.3 注意docker安装的jenkins,而且是较新的版本,所以jenkins容器内的java版本是11的,而我的项目是基于JDK1.8的

    2024年02月13日
    浏览(32)
  • Jenkins + Docker 一键自动化部署 Spring Boot 项目,步骤齐全,少走坑路!

    本文章实现最简单全面的Jenkins+docker+springboot 一键自动部署项目,步骤齐全,少走坑路。 环境 :centos7+git(gitee) 简述实现步骤:在docker安装jenkins,配置jenkins基本信息,利用Dockerfile和shell脚本实现项目自动拉取打包并运行。 推荐一个开源免费的 Spring Boot 实战项目: https://git

    2024年02月08日
    浏览(57)
  • Docker使用Jenkins部署项目

    Docker安装及配置移步Docker安装及配置 目录 1.拉取Jenkin镜像 2.运行启动Jenkins 3.访问Jenkins 4.配置Jenkins 插件下载  配置 5.配置Git仓库拉代码构建 6.测试构建   可通过以下命令查看镜像 记得在防火墙开启对应端口 说明: 命令         作用 -d  容器后台运行 --name jenkins 容器名

    2024年02月11日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包