Docker搭建Jenkins并共用宿主机Docker部署服务(一)搭建Jenkins及插件配置 -转载

news/2025/2/7 19:01:46/文章来源:https://www.cnblogs.com/imtf/p/18703109

前言

公司项目多忙着开发,所有项目服务都是博主一个个部署的,时间久了也是心累,所以抽时间把Jenkins部署上,之后让其他开发人员自己部署(让我解脱吧!!)。

部署Jenkins容器

Docker安装就不在赘述了,可以看我之前的文章(懒了);直接开始拉取jenkins镜像。

拉取镜像

docker pull jenkins/jenkins:2.486-jdk17

下载Maven

博主部署的服务主要是Java为后端+Vue为前端,所以需要Maven支撑Java服务;其他服务(c++、python、go、rust等)可以选择跳过这步。

Maven下载链接:https://maven.apache.org/download.cgi

这里选的是Stable(稳定版)。

解压Maven包

将压缩包通过Xftp工具上传到服务器中,这里我在home目录下创建了Jenkins目录用来存放包(/home/jenkins)。

解压Maven包

tar -xzf apache-maven-3.8.8-bin.tar.gz

更改Setting文件

修改Maven的依赖包存储路径和下载源地址,依赖包存储路径博主创建在 /home/jenkins/repository

修改Maven的setting.xml文件

# 创建Maven本地仓库目录
cd /home/jenkins
mkdir repository
# 赋予权限(这里的权限是给Jenkins容器内操作使用的)
chown -R 1000:1000 /home/jenkins/repository# 切换Maven目录
cd apache-maven-3.8.8
# 修改settings.xml
vim ./conf/settings.xml

下载JDK

博主部署的服务主要是Java为后端+Vue为前端,所以需要JDK支撑java服务;其他服务(c++、python、go、rust等)可以选择跳过这步。

JDK下载链接:https://www.oracle.com/cn/java/technologies/downloads/#java21

解压JDK包

将压缩包通过Xftp工具上传到服务器中,这里我还是放在/home/Jenkins目录下。

解压Node.js包

tar -xzf jdk-21_linux-x64_bin.tar.gz

赋予权限

# 赋予权限(这里的权限是给Jenkins容器内操作使用的)
chown -R 1000:1000 /home/jenkins/jdk-21.0.5

下载Node.js

博主部署的服务主要是Java为后端+Vue为前端,所以需要Node.js支撑Vue服务;其他服务(c++、python、go、rust等)可以选择跳过这步。

Node.js下载链接:https://nodejs.org/dist/

解压Node.js包

将压缩包通过Xftp工具上传到服务器中,这里我还是放在/home/Jenkins目录下。

解压Node.js包

tar -xzf node-v18.18.0-linux-x64.tar.gz

赋予权限

# 赋予权限(这里的权限是给Jenkins容器内操作使用的)
chown -R 1000:1000 /home/jenkins/node-v18.18.0-linux-x64

安装docker-compose

这里的docker-compose是方便后续统一构建用的,大家按自己实际情况决定是否安装。

下载地址:https://github.com/docker/compose/releases

下载后,直接通过xftp上传到服务器目录 /usr/local/bin 

修改名称为 docker-compose

赋予操作权限 

chmod +x /usr/local/bin/docker-compose

创建软链

ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

测试

docker-compose -v

创建Jenkins容器

注意:创建容器前需要给文件夹设定权限,否则Jenkins挂载时会报错权限不足!

创建 /home/jenkins/data 用于映射Jenkins的所有配置数据,其中所有构建的项目都存放在data目录下的:/workspace/

# 切换目录
cd /home/jenkis
# 创建data文件夹
mkdir data
# 赋予权限(这里的权限是给Jenkins容器内操作使用的)
chown -R 1000:1000 /home/jenkins/data

等下会将宿主机的docker.sock文件映射到Jenkins中,也需要赋予权限

# 赋予权限(这里的权限是给Jenkins容器内操作使用的)
chown -R 1000:1000 /var/run/docker.sock

容器创建命令

docker run -p 10240:8080 -p 10241:50000 \--restart always \-v /home/jenkins/data:/var/jenkins_home\-v /home/jenkins/apache-maven-3.8.8/:/opt/maven/apache-maven-3.8.8 \-v /home/jenkins/repository:/opt/maven/repository \-v /home/jenkins/jdk-21.0.5:/opt/jdk/jdk-21.0.5 \-v /home/jenkins/node-v18.18.0-linux-x64:/opt/node/node-v18.18.0-linux-x64 \-v /var/run/docker.sock:/var/run/docker.sock \-v /usr/bin/docker:/usr/bin/docker \-v /usr/local/bin/docker-compose:/usr/local/bin/docker-compose \-v /etc/localtime:/etc/localtime \--name jenkins \-d jenkins/jenkins:2.486-jdk17

--restart always :配置开机自启,失败自动重启

-v /home/jenkins/data:/var/jenkins_home\ :将Jenkins的数据挂载到宿主机

-v /home/jenkins/apache-maven-3.8.8/:/opt/maven/apache-maven-3.8.8 \ :将Maven挂载到Jenkins容器中

 -v /home/jenkins/repository:/opt/maven/repository \ :将Maven本地仓库路径挂载到Jenkins容器中,settings.xml中的路径配置的是容器内的仓库路径

-v /home/jenkins/jdk-21.0.5:/opt/jdk/jdk-21.0.5 : 将JDK21挂载到Jenkins容器中

-v /home/jenkins/node-v18.18.0-liunx-x64:/opt/node/node-v18.18.0-liunx-x64 \ :将Node.js挂载到Jenkins容器中

 -v /var/run/docker.sock:/var/run/docker.sock \ :将宿主机Docker挂载到Jenkins容器中,方便Jenkins操作宿主机的Docker部署服务

 -v /usr/bin/docker:/usr/bin/docker \ :将宿主机Docker挂载到Jenkins容器中,方便Jenkins操作宿主机的Docker部署服务

 -v /usr/local/bin/docker-compose:/usr/local/bin/docker-compose \ :将宿主机docker-compose挂载到Jenkins容器中,方便Jenkins操作宿主机的docker-compose部署服务

 -v /etc/localtime:/etc/localtime \ :将宿主机时间信息挂载到Jenkins容器中

访问Jenkins页面

访问地址:http://你的ip:10240

这里的密码存放地址已经通过挂载方式映射到宿主机的 /home/jenkins/data 中,所以可以通过如下命令查看

tail /home/jenkins/data/secrets/initialAdminPassword

配置Jenkins部署

基础插件安装

开始漫长的等待…………

设置完成后,重启下容器在登陆。

安装GitLab插件

进入 系统管理 -> 插件管理

选择 插件商城 -> 搜索插件 ;勾选插件点击右上角安装。

常用插件安装

GitLab(代码仓库管理):公司自己搭建的GitLab,大家根据自己情况下载其他仓库管理 GitHub Gitee GitCode 等等

Git Parameter Plug-In(git分支管理):可以在构建的时候选择git的某一个分支来构建服务

Pipeline(流水线管理):Jenkins开始进入的时候,推荐安装时会自动装,但是有可能会安装失败,所以在商城搜一下,搜不到就说明装了

Maven Integration(Maven构建工具)

Extended Choice Parameter(参数化构建插件):它允许我们在构建过程中动态地设置和传递参数。对于需要用户输入或者动态选择的参数,我们可以使用多选框、单选框等来呈现

NodeJS(前端构建依赖环境)

SSH(远程登录服务)

Role-based Authorization Strategy(Jenkins用户权限管理插件)

SonarQube Scanner(代码检测插件)

Job ConfigurationHistory(更新历史记录插件)

Build Name and Description(构建时自定义名称)

配置环境变量

进入 系统管理 -> 系统配置 

向下拉拽,找到全局属性,配置Maven、Node环境变量

配置GitLab信息

进入 系统管理 -> 系统配置 ;还是在系统配置内,向下拉找到GitLab

新增GitLab的API Token

获取GitLab个人API Token的方式

选择刚才创建的API Token,测试链接

配置全局工具配置

进入 系统管理 -> 全局工具配置 

配置Maven的settings.xml文件位置

配置JDK路径

配置Git路径

配置Maven路径

配置Node.js路径

点击保存!

                                                              下一篇     Docker:Docker搭建Jenkins并共用宿主机Docker部署服务(二)构建后端微服务多模块 - 怒吼的萝卜 - 博客园

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/880172.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Adam优化器、其与策略梯度法结合

一.Adam优化器旨在根据历史梯度信息来调整每个参数的学习率,从而实现更高效的网络训练。Adam算法的核心思想是同时计算梯度的一阶矩(均值)和二阶矩(未中心的方差)的指数移动平均,并对它们进行偏差校正,以确保在训练初期时梯度估计不会偏向于0。Adam优化器是一种梯度下降…

ES6-3 Babel转码器

Babel是一个广泛使用的ES6转码器,可以将ES6代码转为ES5代码,从而在老版本的浏览器执行。这意味着你可以用ES6的方式编写程序,又不用担心现有的环境是否支持浏览器支持性查看:https://caniuse.com/Babel官网:https://babeljs.io/ 1、转码示例原始代码用了箭头函数,Babel将…

c++专题三

C++专题三学习日记 stack(栈) 仅支持查询或删除最后一个加入的元素(栈顶元素)函数名 功能 时间复杂度top() 返回栈顶元素 O(1)empty() 判断是否为空 O(1)size() 返回元素个数 O(1)push() 在栈顶插入元素 O(1)pop() 删除栈顶元素 O(1)queue(队列) 仅支持查询或删除第一个加入的…

mower 明日方舟自动化脚本的docker镜像构建以及使用

一、前言碎碎念 由于我目前使用的arm开发板,默认没有启用桌面可视化环境,而且又不想装一大堆软件和包影响实机环境,所以使用docker进行mower的镜像构建以及使用 测试平台如下,x64和arm64平台均已经过构建以及使用测试二、mower构建以及部署过程 接下来使用arm平台ubuntu进行…

我的公众号接入AI了

背景 近期,DeepSeek等AI应用的爆火让我深刻意识到AI技术在各个领域中的巨大潜力。为了更好地拥抱AI,我决定在我的所有工作生活场景中尽可能地加入AI,以提升效率和体验。 作为拥抱AI的一环, 我选择了为我的微信公众号接入AI功能,使其能够智能回复用户消息,提供更丰富的交互…

大模型时代的软件进化论:恐龙式软件 vs. 猴群式软件

春节期间,IT圈内两件大事持续发酵,一件是中国大模型DeepSeek R1的开源震动全球AI界,让中国科技界扬眉吐气,廉价大模型走入千家万户;另一件是SAP被客户居然之家告上法庭,要求索赔590万开发费用和1700万软件费用,最终法院判SAP退还350万研发费用。这两件事的背后,实际上映…

xtrabackup 命令备份

Percona XtraBackup 安装下载地址: https://downloads.percona.com/downloads/Percona-XtraBackup-8.0/Percona-XtraBackup-8.0.35-32/binary/redhat/8/x86_64/percona-xtrabackup-80-8.0.35-32.1.el8.x86_64.rpm 官方YUM安装说明: Percona 版本和 YUM - Percona XtraBackup在…

React—03—类组件中事件处理函数的this绑定、事件处理函数的传参;jsx的条件判断渲染;jsx的循环渲染

零、如何给html元素加事件监听 1.原生方式:通过querySelector()方法,捕捉到元素,比如说button元素,然后通过btn.onclick = () =>{}或者通过btn.addEventListensers(click, ()=>{})的方式 2.vue的方式,在元素上使用v-on指令,比如@click 3.react方式,在元素上使用事…

巧用通义灵码,提升前端研发效率

本次分享,主题是利用通义灵码提升前端研发效率。分享内容主要包括以下几部分:首先,我将从前端开发的角度介绍对通义灵码的基本认识;其次,我将展示通义灵码在日常研发中的应用案例;然后,我将通过实例说明,良好的设计能够显著提升通义灵码的效果。在第四个部分,我将介绍…

linux服务器离线安装ollama

一、前言 公司服务器在线安装ollama总是超时连接不上,想着本质就是个安装包,离线安装也可以。固有了这样的一篇博客记录一下。 二、流程 1、查看服务器cpu架构 执行指令 lscpu# x86_64 CPU选择下载ollama-linux-amd64 # aarch64|arm64 CPU选择下载ollama-linux-arm642、下载对…

数字孪生与智慧工厂完美融合,推动智能制造新时代

随着工业4.0和智能制造的浪潮席卷全球,数字孪生技术成为了现代工业发展的重要驱动力。数字孪生,作为一种能够在虚拟环境中精确再现物理实体的技术,通过实时数据的流动和反馈,创建了一个高度仿真的“数字模型”,而这一模型不仅仅停留在静态的模拟阶段,而是与现实世界保持实…

【字符串处理之sscanf函数】读入HH:MM:SS:NN型时间;读入日期

读取时间 HH:MM:SS:NN型 函数 //转为毫秒表示,方便比大小 int get(string time) {int h, m, s, ms;//从字符串内读数据sscanf(time.c_str(), "%d:%d:%d.%d", &h, &m, &s, &ms);return h * 3600000 + m * 60000 + s * 1000 + ms; }样例1 输入 3 23:4…