云服务器使用jenkins+docker自动化部署SpringBoot项目

docker 安装jenkins,就这一步都恶心死了
//拉取镜像,踩了很多坑,用其它版本的镜像插件一直安装失败,最后用的是lts版本(基础版)

用其它版本要么是连不上插件的下载地址,要么是插件下载不成功

 docker pull jenkins/jenkins:lts

 部署
docker run --user root -d -p 10240:8080 -p 10241:50000 -v /usr/local/jenkins:/var/jenkins_home -v /usr/local/maven/apache-maven-3.8.8:/usr/local/maven 
-v /usr/bin/docker:/usr/bin/docker -v /var/run/docker.sock:/var/run/docker.sock -v /data/app/logs:/data/app/logs --name myjenkins 056e9a39e8be

 

细听我慢慢道来,(-v那些千万不要不弄,因为后面都会用上)

解释一下:-d 后台运行容器-p 端口映射--user root  指定运行容器角色  否则可能会导致没有权限从而构建失败-v是将你本地的文件夹挂载到容器指定的文件夹
其中-v /usr/local/jenkins:/var/jenkins_home是指定docker容器下的Jenkins的/var/jenkins_home路径在宿主机的/usr/local/jenkins
/usr/local/maven/apache-maven-3.8.8:/usr/local/maven 
是宿主机的 maven地址:/usr/local/maven/apache-maven-3.8.8映射到容器里面/usr/local/maven
/usr/bin/docker:/usr/bin/docker和/var/run/docker.sock:/var/run/docker.sock是为了在Jenkins容器里面使用docker命令,不然你后面部署的时候docker命令都用不了

其中要对宿主机的/usr/local/jenkins创建和授权


 mkdir -p /usr/local/jenkins
chmod 777 /usr/local/jenkins



这里说一下linux安装maven
1:先是在maven官方下载地址Maven – Download Apache Maven选择了3.8.8的下载

 然后直接拖进机器里面,因为我的宿主机maven地址是/usr/local/maven
所以你也相对应创建文件夹就可以了。
然后解压
tar zxvf apache-maven-3.8.8-bin.tar.gz

然后在/conf/settings.xml修改镜像地址和本地仓库路径

先创建ck文件夹 

<localRepository>/usr/local/maven/apache-maven-3.8.8/ck</localRepository>
<mirror>
  <id>alimaven</id>
  <name>aliyun maven</name>
   <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
  <mirrorOf>central</mirrorOf>
</mirror>

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

 然后最重要的是要配置maven环境变量,编辑:vi /etc/profile 文件,翻到最后一行加上 export MAVEN_HOME=/usr/local/apache-maven-3.6.3 export PATH= P A T H : PATH: PATH:MAVEN_HOME/bin 保存退出,如下图:
在这里插入图片描述

 其中MAVEN_HOME一定要是你自己的maven路径!!!!!!

重新加载一下,source /etc/profile 使新增配置生效

输入命令:mvn -v在这里插入图片描述

 看到版本号就说明安装好了

回到Jenkins
访问地址是:你的服务器IP地址:端口号 ,这个端口号是刚刚docker run 命令映射的端口号10240到这个页面稍微等等.....................

 

 //查看jenkins首次登录的密码
cat /usr/local/jenkins/secrets/initialAdminPassword(这是我的路径)

选择安装推荐插件

 

 jdk可有可无

 

 

 配置好全局之后,新建一个项目(也可以先去下载一个Maven Integration plugin的插件然后新建一个然后新建一个maven项目)但是构建一个自由风格的项目也是可以的

 

 

 

 

在使用Git作未源码管理时,必须保证源码中项目根目录文件下有编写好的Dockerfile文件 

 

 

 文件内容如下:

 

 

 

 

没有红色提示就成功连接仓库了

指定源码的分支

其余不用管,直接来到构建 

 

执行shell,输入shell脚本  

#!/bin/bash
#maven打包
/usr/local/maven/bin/mvn clean package -Dmaven.test.skip=true
echo 'package ok!'
echo 'build start!'
cd ./
service_name="education_back"
service_prot=8887
#查看镜像id
IID=$(docker images | grep "$service_name" | awk '{print $3}')
echo "IID $IID"
if [ -n "$IID" ]
then
    echo "exist $service_name image,IID=$IID"
    #删除镜像
    docker rmi -f $service_name
    echo "delete $service_name image"
    #构建
    docker build -t $service_name .
    echo "build $service_name image"
else
    echo "no exist $service_name image,build docker"
    #构建
    docker build -t $service_name .
    echo "build $service_name image"
fi
#查看容器id
CID=$(docker ps | grep "$service_name" | awk '{print $1}')
echo "CID $CID"
if [ -n "$CID" ]
then
    echo "exist $service_name container,CID=$CID"
    #停止
    docker stop $service_name
    #删除容器
    docker rm $service_name
else
    echo "no exist $service_name container"
fi
#启动
docker run -d -p $service_prot:$service_prot -v /data/app/logs:/data/app/logs --name $service_name $service_name
#查看启动日志
#docker logs -f  $service_name

 这里说一下最后的

#启动
docker run -d -p $service_prot:$service_prot -v /data/app/logs:/data/app/logs --name $service_name $service_name

其中/data/app/logs是映射到宿主机的/data/app/logs,因为我这个项目里面使用了logback.xml,所以要用到这个路径的文件夹

 

 保存回到主页面!

出现刚刚新建的项目!点击立即构建

控制台输出结果!构建成功!  

 最后因为我使用的是云服务器,所以记得开放使用到的端口。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【应急响应】后门攻击检测指南Rookit内存马权限维持WINLinux

文章目录 Windows实验常规后门&#xff1a; 网络对外连接查看 自启动测试&#xff1a;隐藏账户映像劫持屏保&登录 Linux实验常规后门&#xff1a;Rootkit后门&#xff1a;GScan rkhunter权限维持后门&#xff1a;GScan rkhunter Web层面&#xff1a;通用系统层面 主机层面后…

大数据技术之SparkCore

第1章 RDD概述 1.1 什么是RDD RDD&#xff08;Resilient Distributed Dataset&#xff09;叫做弹性分布式数据集&#xff0c;是Spark中最基本的数据抽象。 代码中是一个抽象类&#xff0c;它代表一个弹性的、不可变、可分区、里面的元素可并行计算的集合。 RDD代表的是弹性、…

【Pytorch】六行代码实现:特征图提取与特征图可视化

前言 之前记录过特征图的可视化&#xff1a;Pytorch实现特征图可视化&#xff0c;当时是利用IntermediateLayerGetter 实现的&#xff0c;但是有很大缺陷&#xff0c;只能获取到一级的子模块的特征图输出&#xff0c;无法获取内部二级子模块的输出。今天补充另一种Pytorch官方…

数字孪生新能源智慧充电桩Web3D可视化运维系统

放眼全球&#xff0c;近十年来&#xff0c;新能源汽车赛道堪称“热得发烫”。伴随着进入成年期的新能源汽车行业对相关配套设备支撑水平的提升&#xff0c;作为其“新基建”的充电桩领域表现更为突出的价值势能。过去&#xff0c;在一系列补贴政策和资本刺激下&#xff0c;充电…

插装式两位两通电磁阀DSV-080-2NCP、DDSV-080-2NCP

特性 压力4000 PSI(276 Bar) 持续的电磁。 硬化处理的提升阀和柱塞可获得更长的寿命和低泄漏量。 有效的混式电磁铁结构。 插装阀允许交流电压。可选的线圈电压和端子。 标准的滤网低泄漏量选择 手动关闭选择。 工业化通用阀腔。 紧凑的尺寸。 两位两通常闭式双向电磁…

vue element-ui web端 引入高德地图,并获取经纬度

发版前接到一个临时新需求 &#xff0c;需要在web端地址选择时用地图&#xff0c;并获取经纬度。 临阵发版之际加需求&#xff0c;真的是很头疼&#xff0c;于是赶紧找度娘&#xff0c;找api。 我引入的是高德地图&#xff0c;首先要去申请key &#xff0c; 和密钥&#xff0c;…

在安装docker配置端口时 centos7 防火墙规则失效

一、问题 1、做端口映射管理的时候&#xff0c;自己关闭了防火墙&#xff0c;或者开启防火墙&#xff0c;或者指定开关端口&#xff0c;但是都不影响端口的使用&#xff0c;这就很奇怪&#xff0c;也就是本文的内容&#xff01; 2、思路&#xff0c;确认是请求到了防火墙的那…

老板们搞怪营业,品牌好感度upup真有梗

老板下场营业最经典的莫过于“老乡鸡”了。在手撕联名信事件出圈后&#xff0c;老乡鸡围绕束从轩创始人IP&#xff0c;开展了一系列社交传播宣传&#xff0c;比如“咯咯哒糊弄学”等。 50多岁的老乡鸡董事长束从轩&#xff0c;一改传统企业家严肃正经的形象&#xff0c;跟着老乡…

Windows下virtualbox相关软件安装设置全过程

一、下载 virtual box 程序 virtual box扩展程序-Oracle_VM_VirtualBox_Extension_Pack-7.0.8.vbox-extpack Virtualbox GuestAdditions 程序-解决分辨率&#xff0c;主机虚拟机之间共享文件、剪贴板等问题 http://download.virtualbox.org/virtualbox/7.0.8/ 或者 virtual b…

【shell脚本】条件语句

一、条件测试操作 1.1test命令与 [ ] 符号 测试表达试是否成立&#xff0c;若成立返回0&#xff0c;否则返回其它数值 1.1.1文件测试常用的测试操作符 符号作用-d测试是否为目录-e测试是否为目录或文件-f测试是否为文件-r测试当前用户是否有读取权限-w测试当前用户是否有写…

你掌握了stream流的全部新特性吗?

我们知道很早之前java8对于之前的版本更新了许多 新的支持&#xff0c;比如lamda函数式接口的支持&#xff0c;支持更多函数式接口的使用&#xff0c;对链表&#xff0c;数组&#xff0c;队列&#xff0c;集合等实现了Collectio接口的数据结构提供了StreamSupport.stream()支持…

运维监控工具PIGOSS BSM扩展指标介绍

PIGOSS BSM运维监控工具&#xff0c;除系统自带指标外&#xff0c;还支持添加SNMP扩展指标、脚本扩展指标、JMX扩展指标、自定义JDBC指标等&#xff0c;今天本文将介绍如何添加SNMP扩展指标和脚本扩展指标。 添加SNMP扩展指标 前提&#xff1a;需要知道指标的oid 例子&#xff…

如何实现Spring AOP以及Spring AOP的实现原理

AOP:面向切面编程,它和OOP&#xff08;面向对象编程)类似。 AOP组成: 1、切面:定义AOP是针对那个统一的功能的&#xff0c;这个功能就叫做一个切面&#xff0c;比如用户登录功能或方法的统计日志&#xff0c;他们就各种是一个切面。切面是有切点加通知组成的。 2、连接点:所有可…

Redis入门学习笔记【一】

目录 一、Redis是什么 二、Redis数据结构 2.1 Redis 的五种基本数据类型 2.1.1String&#xff08;字符串&#xff09; 2.1.2字符串列表&#xff08;lists&#xff09; 2.1.3字符串集合&#xff08;sets&#xff09; 2.1.5哈希&#xff08;hashes&#xff09; 2.2 Red…

MQTT协议 详解

文章目录 一、啥是MQTT&#xff1f;1. MQTT协议特点2. 发布和订阅3. QoS&#xff08;Quality of Service levels&#xff09;QoS 0 —— 最多1次QoS 1 —— 最少1次QoS 2 —— 只有1次 二、MQTT 数据包结构1. MQTT固定头2. MQTT可变头 / Variable header3. Payload消息体 三、M…

Ceph入门到精通- storcli安装

storcli 是LSI公司官方提供的Raid卡管理工具&#xff0c;storcli已经基本代替了megacli&#xff0c;是一款比较简单易用的小工具。将命令写成一个个的小脚本&#xff0c;会将使用变得更方便。 安装简单&#xff0c;Windows系统下解压出来以后可以直接运行。 Linux系统默认位置…

Android程序员向音视频进阶,有前景吗

随着移动互联网的普及和发展&#xff0c;Android开发成为了很多人的就业选择&#xff0c;希望在这个行业能获得自己的一席之地。然而&#xff0c;随着时间的推移&#xff0c;越来越多的人进入到了Android开发行业&#xff0c;就导致目前Android开发的工作越来越难找&#xff0c…

7.Shuffle详解

1.分区规则 ps."&"指的是按位与运算&#xff0c;可以强制转换为正数 ps."%",假设reduceTask的个数为3&#xff0c;则余数为0&#xff0c;1&#xff0c;2正好指代了三个分区 以上代码的含义就是对key的hash值强制取正之后&#xff0c;对reduce的个数取…

大数据技术之Kafka集成

一、集成Flume 1.1 Flume生产者 &#xff08;1&#xff09;启动Kafka集群 zkServer.sh startnohup kafka-server-start.sh /opt/soft/kafka212/config/server.properties & &#xff08;2&#xff09;启动Kafka消费者 kafka-console-consumer.sh --bootstrap-server 192…

动态内存管理

文章目录 1.动态内存函数1.1free1.2malloc1.3calloc1.4realloc 2.动态内存错误2.1解引用空指针--非法访问内存2.2越界访问动态空间2.3free释放非动态空间2.4free释放部分动态空间2.5free多次释放动态空间2.6未释放动态内存 3.动态内存题目3.1形参不影响实参3.2地址返回&#xf…