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

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

前置条件

docker安装成功
按照下面配置加速

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://register.librax.org"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

一、拉取Jenkins镜像

docker pull jenkins/jenkins:lts
docker images #查看镜像

二、宿主机安装好maven

  • 命令下载
    wget http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
  • 官网下载后传到Linux服务器
  • 然后使用命令进行解压
tar -zxvf apache-maven-3.6.3-bin.tar.gz

解压需要解压到这个目录下面 /opt/develop_resource/apache-maven-3.6.3,因为后面再启动jenkins的时候需要挂载在他容器的目录里面

  • 宿主机上的 /opt/develop_resource/apache-maven-3.6.3 目录将会被挂载到 Docker 容器内的/opt/maven/apache-maven-3.6.3 目录上。
  • 如果/opt/maven/apache-maven-3.6.3 在容器内部不存在,Docker 会自动创建这个目录
  • 在容器运行期间,对 /opt/maven/apache-maven-3.6.3 内部所做的任何更改都会反映到宿主机的 /opt/develop_resource/apache-maven-3.6.3 目录中,反之亦然
  • 配置maven镜像加速
    在/opt/develop_resource/apache-maven-3.6.3/conf找到setting文件
    新增配置:
<mirrors><mirror><id>alimaven</id><mirrorOf>central</mirrorOf><name>aliyun maven</name><url>http://maven.aliyun.com/nexus/content/repositories/central/</url></mirror></mirrors>

在这里插入图片描述

三、运行启动Jenkins

先在宿主机创建Jenkins的挂载目录

mkdir -p /home/jenkins/workspace

运行启动jenkins命令如下:

docker run -uroot -d --restart=always --privileged=true \-p 10240:8080 -p10241:50000 \-v /home/jenkins/workspace/:/var/jenkins_home/workspace \-v /var/run/docker.sock:/var/run/docker.sock \-v /usr/bin/docker:/usr/bin/docker \-v /opt/develop_resource/apache-maven-3.6.3:/opt/maven/apache-maven-3.6.3 \-e MAVEN_HOME=/opt/maven/apache-maven-3.6.3 \-e PATH="/opt/maven/apache-maven-3.6.3/bin:/opt/java/openjdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" \--name jenkins jenkins/jenkins:lts

通过docker ps指令可以查看容器是否启动
在这里插入图片描述
Jenkins启动完整后进入容器查看maven是否配置正确

docker exec -it jenkins bash
mvn -v

在这里插入图片描述
四、浏览器访问Jenkins,ip+10240
注意:首次进入需要获取管理员密码,可以进入Jenkins容器查看

docker exec -it jenkins bash
cat /var/jenkins_home/secrets
这个目录下存了管理员密码

进入后可以新建一个账号,插件可选择性安装,这里略

五、Jenkins后台配置

  1. 配置maven
    在这里插入图片描述

    新增环境变量并保存
    注意这里的路径是根据启动容器来配置的
 M2_HOME  /opt/maven/apache-maven-3.6.3PATH+EXTRA  $M2_HOME/bin
  1. 安装必要的插件
    在这里插入图片描述
    在这里插入图片描述
    搜索框依次搜索并安装
  • gitee使用:Gitee
  • maven 插件:Maven Integration plugin
  • SSH远程连接插件:Publish Over SSH
  1. 配置环境
    在这里插入图片描述
    系统配置里找到gitee
    在这里插入图片描述
    在这里插入图片描述
    令牌获取地址

在这里插入图片描述
4. 配置ssh(还是在上面菜单,往下滑找到这个配置位置)
在这里插入图片描述
在这同时修改服务器密码
在这里插入图片描述
5. tool模块配置maven
在这里插入图片描述
在这里插入图片描述
这里配置的地址与前面配置的保持一致即可
6. 构建任务,新建自动化部署任务
在这里插入图片描述
在这里插入图片描述
选择第一个点击确定并进入任务配置
在这里插入图片描述
在这里插入图片描述

填写gitee仓位地址以及gitee认证信息

在这里插入图片描述
一直滑到最下面然后点击生成按钮 输入框中就会出现密码,将这个密码复制到gitee仓库
在这里插入图片描述
进入gitee代码仓库,将密码填入,
url:
在这里插入图片描述
配置轮询
在这里插入图片描述
7.下一步在添加构建步骤这里选择执行shell

#!/bin/bash
# 退出脚本如果任何一个命令失败
set -e# 删除旧的Docker容器
echo "Removing old container..."
docker rm -f app_docker || true # 忽略错误,以防容器不存在
# 删除旧的Docker镜像
echo "Removing old image..."
docker rmi -f app_docker:1.0 || true # 忽略错误,以防镜像不存在# 构建Java应用程序
# echo "Building Java application..."
mvn clean install -Dmaven.test.skip=true# 构建新的Docker镜像
echo "Building new Docker image..."
docker build -t app_docker:1.0 -f ./src/main/docker/Dockerfile .# 运行新的Docker容器
echo "Running new Docker container..."
docker run -d -p 8080:8080 --name app_docker app_docker:1.0echo "Application is now running."

这里在贴上项目的dockerfile

# 指定是基于哪个基础镜像
#FROM java:8
#FROM registry.cn-hangzhou.aliyuncs.com/library/java:8-jdk
FROM eclipse-temurin:8-jdk# 作者信息
MAINTAINER demo# 挂载点声明
VOLUME /tmp# 将本地的一个文件或目录,拷贝到容器的文件或目录里
ADD /target/demoProject-2.6.13.jar springboot.jar#shell脚本
RUN bash -c 'touch /springboot.jar'# 将容器的8080端口暴露,给外部访问。
EXPOSE 8080# 当容器运行起来时执行使用运行jar的指令
ENTRYPOINT ["java", "-jar", "springboot.jar"]#ENTRYPOINT ["java", "-jar", "/springboot.jar", "--spring.profiles.active=prod"]

改完之后通过git命令上传到gitee上面后,jenkins会自动的进行构建
在这里插入图片描述
最后成功了!!!
需要注意的是我暴露的端口是8080
这里shell命令中挂载的端口和dockerfile中暴露端口要一致才能进行

启动成功后查看docker进程
在这里插入图片描述

相关文章:

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

前置条件 docker安装成功 按照下面配置加速 sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-EOF {"registry-mirrors": ["https://register.librax.org"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker一、…...

Nginx 499 错误的原因及解决方法

Nginx 499 错误的原因及解决方法 原因 客户端超时&#xff1a; 客户端在等待服务器响应时超时&#xff0c;导致连接被关闭。 解决方法&#xff1a;优化服务端响应时间&#xff0c;或调大客户端的连接超时时间。 服务端响应过慢&#xff1a; 后端服务处理请求时间过长。 解决方法…...

Linux网络多进程并发服务器和多线程并发服务器

多进程 还是以大小写转换为例子 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <pthread.h> #include <sys/socket.h> #include <arpa/inet.h> #include "wrap.h" #include…...

VScode 画时序图(FPGA)

1、先安装插件&#xff1a; 2、然后就可以编写一个.js文件&#xff0c;如下&#xff1a; {signal: [{name: clk, wave: p.......|..},{name: rstn, wave: 01......|..},{name: din_vld, wave: 0.1.0...|..},{name: din, wave: "x.x...|..", data: ["D0", …...

Kubernetes 集群搭建(二):搭建k8s集群 (1.28版本)

&#xff08;一&#xff09;虚拟环境准备 名称ip备注m1192.168.101.131mastern1192.168.101.132workern2192.168.101.133worker &#xff08;二&#xff09;所有主机统一配置 2.1 关闭防火墙和selinux systemctl stop firewalld systemctl disable firewalld sed -i s/enfo…...

一文详解OpenCV环境搭建:Windows使用CLion配置OpenCV开发环境

在计算机视觉和图像处理领域&#xff0c;OpenCV 是一个不可或缺的工具。其为开发者提供了一系列广泛的算法和实用工具&#xff0c;支持多种编程语言&#xff0c;并且可以在多个平台上运行。对于希望在其项目中集成先进视觉功能的开发者来说&#xff0c;掌握如何配置和使用OpenC…...

Python爬取数据(二)

一.example2包下的 1.re模块的compile函数使用 import repatternre.compile(r\d) print(pattern) 2.match的方法使用 import re patternre.compile(r\d) # m1pattern.match(one123twothree345four) #参数2&#xff1a;指定起始位置(包含),参数3&#xff1a;终止位置(包含),…...

前端用用jsonp的方式解决跨域问题

前端用用jsonp的方式解决跨域问题 前端用用jsonp的方式解决跨域问题 前端用用jsonp的方式解决跨域问题限制与缺点&#xff1a;前端后端测试使用示例 限制与缺点&#xff1a; 不安全、只能使用get方式、后台需要相应jsonp方式的传参 前端 function jsonp(obj) {// 动态生成唯…...

计算机网络 3-2 数据链路层(流量控制与可靠传输机制)

3.4 流量控制与可靠传输机制 流量控制&#xff1a;指由接收方控制发送方的发送速率&#xff0c;使接收方有足够的缓冲空间来接收每个帧 滑动窗口流量控制:一种更高效的流量控制方法。 在任意时刻&#xff0c;发送方都维持一组连续的允许发送帧的序号&#xff0c;称为发送窗口…...

科普:原始数据是特征向量么?

一、输入向量 x \mathbf{x} x是特征向量 机器学习算法公式中的输入向量 x \mathbf{x} x通常要求是特征向量。原因如下&#xff1a; 从算法原理角度&#xff1a;机器学习算法旨在通过对输入数据的学习来建立模型&#xff0c;以实现对未知数据的预测或分类等任务。特征向量是对…...

Jenkins配置的JDK,Maven和Git

1. 前置 在配置前&#xff0c;我们需要先把JDK&#xff0c;Maven和Git安装到Jenkins的服务器上。 &#xff08;1&#xff09;需要进入容器内部&#xff0c;执行命令&#xff1a;docker exec -u root -it 容器号/容器名称&#xff08;2选1&#xff09; bash -- 容器名称 dock…...

有效压缩 Hyper-v linux Centos 的虚拟磁盘 VHDX

参考&#xff1a; http://www.360doc.com/content/22/0505/16/67252277_1029878535.shtml VHDX 有个不好的问题就是&#xff0c;如果在里面存放过文件再删除&#xff0c;那么已经使用过的空间不会压缩&#xff0c;导致空间一直被占用。那么就需要想办法压缩空间。 还有一点&a…...

网络空间安全(53)XSS

一、定义与原理 XSS&#xff08;Cross Site Scripting&#xff09;&#xff0c;全称为跨站脚本攻击&#xff0c;是一种网站应用中的安全漏洞攻击。其原理是攻击者利用网站对用户输入内容校验不严格等漏洞&#xff0c;将恶意脚本&#xff08;通常是JavaScript&#xff0c;也可以…...

【LeetCode 热题100】45:跳跃游戏 II(详细解析)(Go语言版)

&#x1f680; 力扣 45&#xff1a;跳跃游戏 II&#xff08;全解法详解&#xff09; &#x1f4cc; 题目描述 给你一个非负整数数组 nums&#xff0c;表示你最初位于数组的第一个位置。 数组中的每个元素表示你在该位置可以跳跃的最大长度。 你的目标是使用 最少的跳跃次数 到…...

Spring MVC 框架 的核心概念、组件关系及流程的详细说明,并附表格总结

以下是 Spring MVC 框架 的核心概念、组件关系及流程的详细说明&#xff0c;并附表格总结&#xff1a; 1. 核心理念 Spring MVC 是基于 MVC&#xff08;Model-View-Controller&#xff09;设计模式 的 Web 框架&#xff0c;其核心思想是 解耦&#xff1a; Model&#xff1a;数…...

使用 redis 实现消息队列

方案1: 使用list做消息队列问题1: 如何保证消息不丢失问题 2: 重复消费/幂等 方案 2: zset实现消息队列方案 3: 发布/订阅(pub/sub)问题1: 如何保证消息不丢失问题 2: 重复消费/幂等 方案 4: Stream 实现消息队列问题1: 如何保证消息不丢失问题 2: 重复消费/幂等 方案1: 使用li…...

金融数据分析(Python)个人学习笔记(6):安装相关软件

python环境的安装请查看Python个人学习笔记&#xff08;1&#xff09;&#xff1a;Python软件的介绍与安装 一、pip 在windows系统中检查是否安装了pip 打开命令提示符的快捷键&#xff1a;winR&#xff0c;然后输入cmd 在命令提示符中执行如下命令 python -m pip --version…...

Android Material Design 3 主题配色终极指南:XML 与 Compose 全解析

最小必要颜色配置 <!-- res/values/themes.xml --> <style name"Theme.MyApp" parent"Theme.Material3.DayNight"><!-- 基础三原色 --><item name"colorPrimary">color/purple_500</item><item name"col…...

PyTorch参数管理详解:从访问到初始化与共享

本文通过实例代码讲解如何在PyTorch中管理神经网络参数&#xff0c;包括参数访问、多种初始化方法、自定义初始化以及参数绑定技术。所有代码可直接运行&#xff0c;适合深度学习初学者进阶学习。 1. 定义网络与参数访问 1.1 定义单隐藏层多层感知机 import torch from torch…...

页面简单传参

#简单的情景&#xff1a;你需要在帖子主页传递参数给帖子详情页面&#xff0c;携带在主页获得的帖子ID。你有以下几种传递方法# #使用Vue3 TS# 1. 通过 URL 参数传递&#xff08;Query 参数&#xff09; 这是最简单、最常用的方法&#xff0c;ID 会显示在 URL 中的 ? 后面…...

nginx路径匹配的优先级

在 Nginx 配置中&#xff0c;当请求 /portal/agent/sse 时&#xff0c;会匹配 location ~* /sse$ 规则&#xff0c;而不是 location /portal。原因如下&#xff1a; 匹配规则解析 location ~* /sse$ ~* 表示 不区分大小写的正则匹配/sse$ 表示以 /sse 结尾的路径匹配结果&#…...

一周学会Pandas2 Python数据处理与分析-Pandas2一维数据结构-Series

锋哥原创的Pandas2 Python数据处理与分析 视频教程&#xff1a; 2025版 Pandas2 Python数据处理与分析 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili Pandas提供Series和DataFrame作为数组数据的存储框架。 Series&#xff08;系列、数列、序列&#xff09;是一个带有…...

DApp实战篇:前端技术栈一览

前言 在前面一系列内容中&#xff0c;我们由浅入深地了解了DApp的组成&#xff0c;从本小节开始我将带领大家如何完成一个完整的DApp。 本小节则先从前端开始。 前端技术栈 在前端开发者速入&#xff1a;DApp中的前端要干些什么&#xff1f;文中我说过&#xff0c;即便是在…...

leetcode6.Z字形变换

题目说是z字形变化&#xff0c;但其实模拟更像n字形变化&#xff0c;找到字符下标规律就逐个拼接就能得到答案 class Solution {public String convert(String s, int numRows) {if(numRows1)return s;StringBuilder stringBuilder new StringBuilder();for (int i 0; i <…...

HarmonyOS应用开发者高级-编程题-001

题目一:跨设备分布式数据同步 需求描述 开发一个分布式待办事项应用,要求: 手机与平板登录同一华为账号时,自动同步任务列表任一设备修改任务状态(完成/删除),另一设备实时更新任务数据在设备离线时能本地存储,联网后自动同步实现方案 // 1. 定义分布式数据模型 imp…...

鸿蒙开发者高级认证编程题库

题目一:跨设备分布式数据同步 需求描述 开发一个分布式待办事项应用,要求: 手机与平板登录同一华为账号时,自动同步任务列表任一设备修改任务状态(完成/删除),另一设备实时更新任务数据在设备离线时能本地存储,联网后自动同步实现方案 // 1. 定义分布式数据模型 imp…...

Ubuntu(CentOS、Rockylinux等)快速进入深度学习pytorch环境

这里写自定义目录标题 安装进入系统&#xff08;如Ubuntu22.04&#xff09;安装anacondapip、conda换源pip换源conda换源 安装nvidia安装pytorch环境针对于wsl的优化 安装进入系统&#xff08;如Ubuntu22.04&#xff09; docker 、 wsl 、 双系统 、服务器系统 推荐 Ubuntu 20…...

[实战] 天线阵列波束成形原理详解与仿真实战(完整代码)

天线阵列波束成形原理详解与仿真实战 1. 引言 在无线通信、雷达和声学系统中&#xff0c;波束成形&#xff08;Beamforming&#xff09;是一种通过调整天线阵列中各个阵元的信号相位和幅度&#xff0c;将电磁波能量集中在特定方向的技术。其核心目标是通过空间滤波增强目标方…...

Android开发okhttp添加头部参数

Android开发okhttp添加头部参数或者是头文件 private static class RequestHeaderInterceptor implements Interceptor {Overridepublic Response intercept(Chain chain) throws IOException {Request original chain.request();//添加头部信息Request request original.new…...

Halcon图像采集

Halcon是一款强大的机器视觉软件&#xff0c;结合C#可以开发出功能完善的视觉应用程序。 基本设置 确保已经安装了Halcon和Halcon的.NET库&#xff08;HalconDotNet&#xff09;。 1. 添加引用 在C#项目中&#xff0c;需要添加对HalconDotNet.dll的引用&#xff1a; 右键点…...