docker-compose 集成Jenkins部署,打包,发布

news2025/1/21 1:03:20

前言

需要提前准备的条件

1.git
2.Maven环境
3.Docker环境
4.JDK环境(Centos7.4自带JDK环境去除,重装的JDK)
5.Nodejs #前端发布使用

一、 jenkins部署

下载镜像

#查询镜像
docker search jenkins

在这里插入图片描述

#下载镜像
docker pull jenkins/jenkins

在这里插入图片描述

编写docker-compose.yml

version : '3'
services:
  jenkins:
    user: root
    restart: always
    image: jenkins/jenkins:2.361.4-lts
    container_name: jenkins
    ports:
      - 8080:8080
      - 50000:50000
    volumes:
      - /srv/jenkins/jenkins_home/:/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
      - /usr/local/java/jdk1.8.0_161:/usr/local/java/jdk1.8.0_161
      - /usr/local/maven/apache-maven-3.9.1:/usr/local/maven/apache-maven-3.9.1
      - /usr/local/node13:/usr/local/node13
      - /root/.ssh:/root/.ssh

查询linux服务器中jdk,maven,nodejs的路径地址,挂载到jenkins容器的指定路径,如下图:
写法:-服务器路径:容器路径
图片内容说明将服务器中的jdk,maven,nodejs挂载到jenkins容器中
在这里插入图片描述- /root/.ssh:/root/.ssh 为ssh生成的密钥地址!!!

图中可以合并写成

    volumes:
      - /srv/jenkins/jenkins_home/:/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
      - /usr:/usr  #将服务器usr目录挂载到jenkins容器的usr目录中
      - /root/.ssh:/root/.ssh

启动容器

Jenkins需要下载大量内容,但是由于默认下载地址下载速度较慢,如有需要可以设置下载地址为国内镜像站

cd /home/jenkins_home/
cat hudson.model.UpdateCenter.xml 
# 修改数据卷中的hudson.model.UpdateCenter.xml文件
<?xml version='1.1' encoding='UTF-8'?>
<sites>
  <site>
    <id>default</id>
    <url>https://updates.jenkins.io/update-center.json</url>
  </site>
</sites>
# 将下载地址替换为http://mirror.esuni.jp/jenkins/updates/update-center.json
<?xml version='1.1' encoding='UTF-8'?>
<sites>
  <site>
    <id>default</id>
    <url>http://mirror.esuni.jp/jenkins/updates/update-center.json</url>
  </site>
</sites>
# 清华大学的插件源也可以https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

启动容器

#在docker-compose.yml所在目录启动
docker compose up -d jenkins

访问Jenkins

在浏览器中输入:http://serverIp:port/访问jenkins,serverIp为docker宿主机的ip,port即为宿主机映射的端口。即:http://192.168.0.1:8080/

#日志查看
docker logs jenkins

在这里插入图片描述
在这里插入图片描述

#根据提示密码在/var/jenkins_home/secrets/initialAdminPassword这个文件中,注意这个路径是jenkins容器中的,所以我们通过如下命令获取一下
docker exec -it jenkins cat /var/jenkins_home/secrets/initialAdminPassword
#如果查不到,可以通过find命令,进行全局搜索映射到服务器的initialAdminPassword的文件
find / -name "initialAdminPassword"

在这里插入图片描述

  • 安装插件
    在这里插入图片描述
  • 设置管理员信息
  • 配置jenkins路径(默认即可)
  • 进入首页
    在这里插入图片描述
    至此,Jenkins部署完成!!!

二、 jenkins打包,发布配置

安装插件

在这里插入图片描述

需要安装的插件:
1.NodeJs
2.SSH Pipeline Steps
3.Maven Integration

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

全局工具配置

在这里插入图片描述

全局配置包含maven,jdk,nodejs,配置中的路径为jenkins容器中的路径:
在这里插入图片描述
如有报错:
在这里插入图片描述请查看docker-compose.yml中配置是否正确
或者 进入jenkins容器
命令:java docker exec -it 容器id /bin/bash
在这里插入图片描述查看配置是否挂载到容器中,确认容器中的usr的maven,jdk,nodejs文件的路径是否和jenkins中路径一致

  • maven的settings.xml配置
    在这里插入图片描述
  • JDK配置
    在这里插入图片描述
  • Maven配置在这里插入图片描述
  • NodeJS配置(发布前端使用)
    如果没有,确认插件是否安装
    在这里插入图片描述

凭据配置

在这里插入图片描述

  • SSH类型
    gitssh凭证配置(拉取代码的时候使用)
    在这里插入图片描述

  • SSH密钥生成

SSH密钥生成
执行命令后,全敲回车 ssh-keygen -t rsa -C "git账号"在这里插入图片描述查看生成的密钥
在这里插入图片描述
id.rsa:私钥文件
id.rsa.pub:公钥文件
私钥配置到jenkins凭据中,公钥配置到git中
在这里插入图片描述

  • 账号密码类型
    目标服务器(需要发布代码的服务器)的凭证配置(上传jar包、前端文件时使用)在这里插入图片描述

发布服务-后端(仅供参考)

以发布 demo 为例:

  1. 在目标服务器上创建docker-compose.yml文件,dockerfile文件夹
    在这里插入图片描述
  2. 在dockerfile中新建 demo 的文件夹
    在这里插入图片描述
  3. 在 demo 新建Dockerfile
    在这里插入图片描述
# 基础镜像
FROM  openjdk:8-jre
# author
MAINTAINER zz

# 挂载目录
VOLUME /home/front
# 创建目录
RUN mkdir -p /home/front
# 指定路径
WORKDIR /home/front
# 复制jar文件到路径
COPY ./demo.jar /home/front
# 启动认证服务
ENTRYPOINT ["java","-jar","demo.jar"]

  1. 在jenkins中新建任务-输入任务名称demo,选择流水线
    在这里插入图片描述流水线脚本配置
    在这里插入图片描述在这里插入图片描述
  2. 运行项目
    在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【音视频开发】基础知识:视频封装格式和编码格式

文章目录 一、封装格式与编码格式的关系视频编码格式视频封装格式MP43GPRM、RMVBAVI、WMVVOBFLVMKVWebMMOVTS 封装格式与编码格式对应 一、封装格式与编码格式的关系 视频编码格式和视频封装格式的关系及区别 这两者的关系好比酒与酒瓶的关系&#xff0c;编码格式好比酒瓶里的…

Scala 从入门到精通

Scala 从入门到精通 scala风格与java风格 public class JavaDemo01 {public static void main(String[] args) {System.out.println("我爱你中国");} }object ScalaDemo01 {def main(args: Array[String]): Unit {println("我爱你中国")} }javac JavaDe…

24.JT-VUE课堂DEMO

<!DOCTYPE html> <html><head><meta charset"utf-8"><title>hello 入门案例</title></head><body><div id"app"><h1>双向数据绑定测试</h1><h3>{{ hello }}</h3></div&…

YOLO环境配置中一些常见的问题

在入门YOLO时&#xff0c;环境配置是绕不过的坎&#xff0c;本文希望通过列举一些常见的问题&#xff0c;帮大家解决一些疑难杂症。然而不同的电脑&#xff0c;环境配置是有差异的&#xff0c;本文不可能面面俱到&#xff0c;大家还是要掌握自己上网查问题、解决问题的能力。 …

easy X(C语言图形化界面)学习

easy X&#xff08;C语言图形化界面&#xff09;学习 易错&#xff1a;头文件创建窗口 图形填充文字创建输出图片鼠标消息函数(老版)鼠标操作&#xff08;新版&#xff09;键盘消息函数getch() 音乐播放修改窗口标题&#xff0c;弹出框框 易错&#xff1a; 1.文件为&#xff0…

DDP学习/PyTorch多GPU训练/查看模型在哪个GPU上

参考&#xff1a; pytorch如何查看tensor和model在哪个GPU上 https://blog.csdn.net/weixin_37889356/article/details/121792888Part 3: Multi-GPU training with DDP (code walkthrough) [pytorch官方教程&#xff0c;有股咖喱味的Inglish, 推荐] https://www.youtube.com/w…

5月14日第壹简报,星期日,农历三月廿五

5月14日第壹简报&#xff0c;星期日&#xff0c;农历三月廿五坚持阅读&#xff0c;静待花开1. 福布斯中国锂电产业链TOP100发布&#xff0c;宁德时代、赣锋锂业、比亚迪等入选。2. 平均降价84%&#xff01;山东、湖南、江西等多地骨科脊柱类耗材集采中选结果落地。3. 世界旅游组…

【CSS系列】第八章 · CSS浮动

写在前面 Hello大家好&#xff0c; 我是【麟-小白】&#xff0c;一位软件工程专业的学生&#xff0c;喜好计算机知识。希望大家能够一起学习进步呀&#xff01;本人是一名在读大学生&#xff0c;专业水平有限&#xff0c;如发现错误或不足之处&#xff0c;请多多指正&#xff0…

anylabeling 自动标注 使用记录 (跑不起来你打我)

目录 一、anylabeling 二、Segment Anything模型ONNX导出 1、下载这个项目 2、环境配置 3、下载SAM预训练权重 4、导出ONNX格式 三、yaml文件编写 四、视频讲解 五、使用记录 六、其他 一、anylabeling anylabeling项目地址 我直接用的之前yolov5的conda虚拟环境 p…

vim编辑器常用命令 (Centos)

1 安装vim编辑器 sudo yum update sudo yum install vim2 设置vim 显示行号 (:set nu) 步骤1&#xff1a;按 ESC 键 退出本机内容模式 步骤2&#xff1a;输入 :set number 或者 :set nu 步骤3&#xff1a;按回车 3 查找 / 步骤1&#xff1a;按 ESC 键 退出本机内容模式 步…

设计模式 - 工厂

文章参考来源 一、概念 创建简单的对象直接 new 一个就完事&#xff0c;但对于创建时需要各种配置的复杂对象例如手机&#xff0c;没有工厂的情况下&#xff0c;用户需要自己处理屏幕、摄像头、处理器等配置&#xff0c;这样用户和手机就耦合在一起了。 可以使代码结构清晰&a…

Python进阶知识(2)—— 什么是GUI编程?一起来学习用Python,Tkinter“做画”吧

文章目录 01 | &#x1f4d5; 什么是 G U I &#xff1f; \color{red}{什么是GUI&#xff1f;} 什么是GUI&#xff1f;&#x1f4d5;02 | &#x1f4d9; 什么是 T k i n t e r &#xff1f;为什么是 T k i n t e r &#xff1f; \color{orange}{什么是Tkinter&#xff1f;为什么…

ESP32在linux下烧录,提示权限有问题,解决方法

执行idf.py -p /dev/ttyACM0 flash下载时&#xff0c;提示这个错误 serial.serialutil.SerialException: [Errno 13] could not open port /dev/ttyACM0: [Errno 13] Permission denied: /dev/ttyACM0 解决方法&#xff1a; 1检查串行端口 /dev/ttyUSB0 是否已被其他程序占用…

神经网络的梯度检查

当编写完一个深层的网络时&#xff0c;可能求导方式过于复杂稍微不小心就会出错&#xff0c;在开始训练使用这个网络模型之前我们可以先进行梯度检查。 梯度检查的步骤如下&#xff1a; 然后反向传播计算loss的导数grad&#xff0c;用以下公式计算误差&#xff1a; 通常来说&…

超星学习通小助手多线程工具Python

话不多说&#xff0c;直接开始&#xff0c;不会安转的直接使用后面两款&#xff0c;下载直接打开exe运行 第一款&#xff1a;网课小助手python&#xff0c;需要自行安装Python环境&#xff08;支持Windows、Mac、Linux各种环境&#xff09; https://wwiv.lanzoul.com/ifVrC0vk…

【K8s】控制器

文章目录 一、认识Pod控制器1、控制器介绍2、控制器种类 二、ReplicaSet&#xff08;RS&#xff09;1、RS的作用与资源清单2、创建RS3、pod扩缩容4、镜像升级5、删除RS 三、Deployment&#xff08;Deploy&#xff09;1、作用与资源清单2、创建deploy3、扩缩容4、镜像更新5、版本…

Vite 是如何站在巨人的肩膀上实现的

所谓的巨人&#xff0c;指的就是 Vite 底层所深度使用的两个构建引擎——Esbuild和Rollup。这两个构建引擎对于 Vite 来说究竟有多重要呢&#xff1f;在 Vite 的架构中&#xff0c;这两者各自扮演了什么样的角色&#xff1f;接下来&#xff0c;我们一起拆解 Vite 的双引擎架构&…

瑞吉外卖项目笔记02——员工管理、设置公共字段自动填充

三、员工信息管理 3.1 添加员工 注意&#xff1a;在设计数据库表字段时&#xff0c;给userName添加了唯一索引&#xff08;所以员工用户名是无法重复的&#xff09; 流程&#xff1a; 前端页面发送POST请求&#xff0c;后端接收到请求和数据&#xff0c;将用户数据添加到数…

PyQt5桌面应用开发(14):数据库+ModelView+QCharts

本文目录 PyQt5桌面应用系列下一个玩具报表一&#xff1a;Markdown文档的列表显示Widget的树、表、列报表Qt中的MVC框架模型视图代理 报表二&#xff1a;Markdown文档的长度图形数据&#xff1a;Markdown文档和Sqlite数据库代码总结 PyQt5桌面应用系列 PyQt5桌面应用开发&#…

FE_Vue学习笔记 框架的执行流程详解

1 分析脚手架结构 &#xff08;1&#xff09;CLI就是 command line interface 的缩写。Vue CLI官网&#xff1a;Vue CLI &#xff08;2&#xff09;安装过程&#xff1a; &#xff08;PS&#xff1a; 提前安装过node.js了&#xff0c;没有安装的可以打开这个&#xff1a;Downl…