Docker安装Jenkins并部署Maven项目详细教程

 更新时间:2023年12月25日 11:06:04   作者:唯有代码不会骗人  
这篇文章主要给大家介绍了关于Docker安装Jenkins并部署Maven项目的相关资料,持续集成、持续交付不仅可以提示开发效率,还可以节省很多测试和运维的成本,需要的朋友可以参考下

一、前言

在开始之前,我们需要保证系统中已经安装了Docker、JDK、Maven。

二、Docker 拉取镜像

我这里使用的是 2.344 版本的 Jenkins,拉取命令如下:

docker pull jenkins/jenkins:2.344

需要稍微等一会,等待拉取完成。

镜像下载完成后,我们可以通过如下命令查看我们 docker 中的所有镜像。

docker images

这里可以看到我们刚才拉取的 2.344版本的 Jenkins 镜像。

三、运行容器

下载镜像成功后,我们需要用此镜像运行一个容器,命令如下:

docker run \
-d \
--name jenkins \
-u 0 \
-p 9999:8080 \
-p 8888:8888 \
-p 50000:50000 \
-v /usr/local/java/jdk-11.0.18:/usr/local/java/jdk-11.0.18 \
-v /usr/local/maven/apache-maven-3.6.1:/usr/local/maven/apache-maven-3.6.1 \
-v /home/jenkins_home:/home/jenkins_home \
jenkins/jenkins:2.344

命令解释:

  • -d:在后台运行
  • --name:为我们当前运行的容器取一个名称
  • -u:以某个用户的身份启动(此处的 0 代表是 root 用户,而如果不加该命令,jenkins 启动会默认以 1000 的用户 jenkins 启动,这样会导致某些文件夹的读写权限不足问题,因此建议加上 -u 0 命令启动容器)
  • p:指定映射的IP和端口,前者为本地系统的端口号,后者为容器内部的端口号。以 -p 9999:8888 举例,8888为容器内的端口号,而9999为容器内端口号映射到本地系统(容器外部)的端口,即我们访问本地系统的9999端口,实际会映射到容器内部的8888端口上。此处开放8888端口是因为后面构建项目时,项目的端口也为8888,避免重新给容器开放端口映射。
  • -v:绑定数据卷,拿 -v /usr/local/java/jdk-11.0.18:/usr/local/java/jdk-11.0.18 举例:表示将本地系统的 /usr/local/java/jdk-11.0.18 映射到 容器内部的 /usr/local/java/jdk-11.0.18。

最后的 jenkins/jenkins:2.344 表示当前启动的容器是基于哪个镜像的,语法 Repository:Tag,如果当前的镜像是唯一的,也可以不用加Tag。

此处我将本地系统的 jdk11 和 maven 都映射到了 当前启动的容器中,而路径我为了便于统一(容器内的路径可以随便自定义),容器内的路径设置为和容器外一样的路径。

/usr/local/java/jdk-11.0.18 路径为本地系统JAVA_HOME 配置的路径,如果忘记了配置的路径,可以通过如下命令查看:

which java

我们复制路径到bin目录的上一级即可,如此处为:/usr/local/java/jdk-11.0.18

/usr/local/maven/apache-maven-3.6.1 路径为本地系统JAVA_HOME 配置的路径,如果忘记了配置的路径,可以通过如下命令查看:

which mvn

同理,复制到 bin 目录的上一层即可,此处为:/usr/local/maven/apache-maven-3.6.1

四、访问Jenkins

当我们输入上述的 docker run 命令后,会生成一个容器,我们可以通过命令查看当前启动的容器:

docker ps

如果某些同学输入命令后,没有看到该信息,那说明我们的容器运行失败了,可以通过如下命令查看所有容器的状态:

docker ps -a

这里的 STATUS 大概率会显示 Exit… 表明你的容器启动失败。我们可以查看具体原因。

解锁Jenkins

如果我们的容器启动成功,那么我们直接访问 本地的ip:9999 即可查看到当前页面。

此时我们如果直接在本地输入命令 cat /var/jenkins_home/secrets/initialAdminPassword 是查看不到的,因为该路径是容器内部的路径,我们需要先进入容器内部,再输入该命令,才能够成功看到密码。

进入容器命令:

docker exec -it 容器id/容器名称 bash

你可以输入的容器id或者容器名称,我一般习惯输入容器名称,如果你的 docker run 命令和我一样,那么可以直接复制如下命令进入容器内部:

docker exec -it jenkins bash

成功进入容器后,我们在输入如下命令查看初始密码:

cat /var/jenkins_home/secrets/initialAdminPassword

我们复制打印出来的密码,粘贴到网页,点击“继续”,进行下一步操作。

自定义Jenkins

此处我建议点击“安装推荐的插件”的选项。然后耐心等待,有可能部分插件会安装失败,因为此处的下载源在国外。部分插件安装失败,我们可以点击重试,如果多次重试仍然失败(就是我本人),我们直接点击下一步。

创建第一个管理员用户

这里可以输入你想创建的账号,输入完毕后,点击保存并完成。

配置实例

这里默认即可,点击保存并完成。

Jenkins 已就绪

点击 “开始使用Jenkins”,就可以进入到 Jenkins 的页面了。

五、Jenkins 配置

安装Maven插件

Maven插件默认是不会给我们安装的,因此我们需要自己安装。

首先点击左侧 “Manage Jenkins”,然后找到 “Manage Plugins”并点击,

然后点击“可选插件”并输入 maven,找到如下插件 Maven Integration plugin,点击下面的 Install without restart。

全局配置

首先点击左侧 “Manage Jenkins”,然后找到 “Global Tool Configuration”并点击,

在这里我们需要配置JDK、Git、Maven。

JDK

点击 “JDK安装”

输入别名及JAVA_HOME,这里的JAVA_HOME对应的是我们docker容器内部的JAVA_HOME,而我们在第三步将运行容器,将 java 映射的地址为 /usr/local/java/jdk-11.0.18(根据你 docker run 时的配置填写),因此这里直接上即可,如图:

/usr/local/java/jdk-11.0.18

GIT

Git会在我们自定义Jenkins时安装插件的时候,自动帮我们安装,此处我们无需填写,默认即可。

Maven

同理,此处需要填写maven的别名和MAVEN_HOME.

MAVEN_HOME在我们运行容器映射的地址为:

/usr/local/maven/apache-maven-3.6.1

我们填上即可。

最后我们点击应用,然后点击保存即可。

六、部署Maven项目

首先,回到Jenkins首页,点击“+新建任务”,如图:

新建Maven项目

输入我们项目的名称,点击构建一个Maven项目,然后点击确定,如图:

配置Git仓库

首先配置我们的Git仓库地址,此处我用的是自己开源的项目,所以无需填写凭证,如果大家的项目需要凭证,可以自行添加:

添加凭证非常简单,我相信都会,填好需要的账号密码点击保存即可。

当我们添加完后,URL下方没有出现红色的错误提示表示能够正常连接到该仓库了,可以继续配置仓库分支,这里我选用的是一个 helloworld 的分支,大家根据实际情况自行填写:

配置Maven构建参数

接下来就是配置Maven,对项目进行打包,Root POM 不用修改,就用 pom.xml,而 Goals and options 我们填写:

clean install -Dmaven.test.skip=true

这时候Maven的最基本配置就完成了。大家可以点击应用,并保存,开始构建项目,看看能不能打包成功。

查看控制台输出:

启动项目

这样就代表成功了,接下来就开始启动项目了,点击项目,打开左侧的配置,依次选择 Post Steps -> Add post build steps -> 执行shell

填上我们的启动脚本,这里只是最简单的脚本,大家可以根据实际情况填写:

cd /var/jenkins_home/workspace/flowable_study/target
nohup java -jar flowable_study-1.0-SNAPSHOT.jar >flowable_study.log &2>1 &

注意:我这里是在docker容器内部运行的java项目,大部分实际情况是需要通过jenkins连接到其他服务器去部署项目。大致的流程为:

  • 将容器内的jar包拷贝到目标服务器
  • 切换目录,杀掉当前正在运行的项目
  • 启动项目

我这里只做最基本的部署演示,因此就不弄那么麻烦。同时我这里项目的端口号为8888,我在创建容器,使用 docker run 时,已经将容器内的8888端口映射到宿主机的8888端口了。

写好之后直接应用、保存。然后重新构建项目,这里就能够直接访问8888端口了。

由此,整个Maven项目构建完成。

总结

到此这篇关于Docker安装Jenkins并部署Maven项目详细教程的文章就介绍到这了,更多相关Docker安装Jenkins部署Maven内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用Shell脚本批量启停Docker服务

    使用Shell脚本批量启停Docker服务

    最近日常测试中经常需要手动启动或停止docker,于是决定写一个Shell脚本来代替人工操作,下面小编把我实现过程分享到脚本之家平台,需要的朋友参考下
    2019-11-11
  • Windows Docker部署Kong网关的实现步骤

    Windows Docker部署Kong网关的实现步骤

    Kong是一个轻量级、快速、灵活的云原生API网关,本文主要介绍了Windows Docker部署Kong网关的实现步骤,具有一定的参考价值,感兴趣的可以了解一下
    2024-03-03
  • 一篇文章弄懂Docker镜像的制作、上传、拉取和部署

    一篇文章弄懂Docker镜像的制作、上传、拉取和部署

    Docker包含三个基本概念,分别是镜像(Image)、容器(Container)和仓库(Repository),镜像是 Docker 运行容器的前提,这篇文章主要给大家介绍了如何通过一篇文章弄懂Docker镜像的制作、上传、拉取和部署的相关资料,需要的朋友可以参考下
    2021-08-08
  • Docker安装配置MySQL的实现步骤

    Docker安装配置MySQL的实现步骤

    MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。在本教程中,会带大家正确安装配置MySQL在Docker
    2021-11-11
  • 解决docker与vmware的冲突问题

    解决docker与vmware的冲突问题

    这篇文章主要介绍了解决docker与vmware的冲突问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • 通过docker容器搭建lamp架构的流程

    通过docker容器搭建lamp架构的流程

    这篇文章主要介绍了dcoker容器搭建lamp架构,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-12-12
  • Docker 仓库管理和Docker Dockerfile详解

    Docker 仓库管理和Docker Dockerfile详解

    仓库(Repository)是集中存放镜像的地方,以下介绍一下 Docker Hub,当然不止 docker hub,只是远程的服务商不一样,操作都是一样的,对Docker 仓库管理相关知识感兴趣的朋友一起看看吧
    2023-11-11
  • docker 搭建部署 YAPI 框架的详细过程

    docker 搭建部署 YAPI 框架的详细过程

    Yapi是一个高效、易用、功能强大的接口文档管理工具,旨在为开发、产品、测试人员提供更优雅的接口管理服务,可以帮助开发者轻松创建、发布、维护 AP,这篇文章主要介绍了docker 搭建部署 YAPI 框架,需要的朋友可以参考下
    2022-08-08
  • Docker部署Apollo的实现步骤

    Docker部署Apollo的实现步骤

    众所周知分布式配置中心在目前也可以说是企业中项目的标配了,本文主要介绍了Docker 部署Apollo的实现步骤,具有一定的参考价值,感兴趣的可以了解一下
    2024-02-02
  • Docker上部署Nginx的方法步骤

    Docker上部署Nginx的方法步骤

    本文主要介绍了Docker上部署Nginx的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-04-04

最新评论