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

【学习Docker(七)】详细讲解Jenkins部署SpringCloud微服务项目,Docker-compose启动

Jenkins部署SpringCloud微服务项目,Docker-compose启动

座右铭:《坚持有效输出,创造价值无限》

本文介绍使用Jenkins部署SpringCloud微服务项目,Docker-compose启动。

之前写过安装Jenkins的过程,这里就不写安装细节了。

因为我的项目用到了MySQL、Redis、Nacos,所以按顺序安装就好了,可以自行选择。

【学习Docker(一)】centos系统 Docker 安装与卸载

【学习Docker(二)】Docker Jenkins的安装与卸载

【学习Docker(三)】Docker Mysql8.0.26的安装与卸载

【学习Docker(四)】Docker-compose的安装与卸载

【学习Docker(五)】Docker Redis的安装与卸载

【学习Docker(六)】Docker Nacos的安装与卸载

这里说一个安装Jenkins我遇到的问题,当时我按照学习Docker二安装的Jenkins没问题,现在安装后插件一直安装不了。

这里你可以安装Jenkins稳定版本

docker pull jenkins/jenkins:lts
docker run -d \-p 8080:8080 \-p 50000:50000 \-v /docker-local/jenkins-lts:/var/jenkins_home \-v /etc/localtime:/etc/localtime \--restart=always \--name=jenkins-lts \jenkins/jenkins:lts

这里我目前安装是没问题的。

安装配置

下载必要插件

  1. 安装 Maven Integration
  2. 安装 Publish Over SSH(如果不需要远程推送,不用安装)
  3. 如果使用 Gitee 码云,安装插件Gitee(自带 Git 不用单独安装)

安装maven

在这里插入图片描述

配置jdk

在这里插入图片描述

配置SSH Servers

在这里插入图片描述

这里的Remote Directory需要填写服务器的一个目录,因为我准备把jar等都放在docker-local下,所以我指定了这个路径

创建maven项目

在这里插入图片描述

General

根据自己的需求填写就行

在这里插入图片描述

源码管理

在这里插入图片描述

这里选择git、填写git链接、用户名和密码及对应打包的分支。

构建环境

在这里插入图片描述

在这里插入图片描述

建议勾选Delete workspace before build starts,这样可以保证每次打包的代码是最新的,避免删除了某些文件还会再进行打包进来的情况。

勾选Send files or execute commands over SSH after the build runs,当构建完成后,会执行ssh脚本。

因为我是使用docker启动项目,所以我是把所有的jar包放在了/docker-local/blog/jar目录下,该目录放了一个脚本。

start.sh脚本

脚本内容首先是把jar包都copy到该目录,再进行关闭项目相关的docker镜像,最后打包启动。

rm -rf /docker-local/blog/jar/*.jar
cp /docker-local/blog/out/cloud-api/ants-manage/target/* /docker-local/blog/jar
cp /docker-local/blog/out/cloud-api/ants-web/target/* /docker-local/blog/jar
cp /docker-local/blog/out/cloud-gateway/target/* /docker-local/blog/jar
cp /docker-local/blog/out/cloud-oauth/target/* /docker-local/blog/jar
cp /docker-local/blog/out/cloud-service/ants-user-service/target/* /docker-local/blog/jarecho "清理已有容器及镜像资源"for container in {"cloud-gateway","ants-user-service","cloud-oauth","ants-web","ants-manage"}
doimage=docker_${container}if docker ps | grep ${container} ;thendocker stop ${container}fiif docker ps -a | grep ${container};thendocker rm ${container}fiif docker images | grep ${image};thendocker rmi ${image}fi
donedocker-compose up -d;exit 0;

Build

在这里插入图片描述

clean package  -DskipTests=true

打包,跳过测试。

Post-Steps

注意:如果是单体项目,这个就添加一个SSH就好了(第二张图即可)。

这里是指定服务器,然后从文件中找到jar包上传到第三步的Remote Directory目录下。

这个第四步,不需要加docker-local的前缀。

因为我这里是微服务,有些服务进目录以后就是target,有些更深一级,所以我增加了两个配置,然后把打包jar包都放在/blog/out目录下。

在这里插入图片描述

在这里插入图片描述

保存即可

立即构建

因为我是docker-compose部署项目,所以在/docker-local/blog/jar目录增加一个docker-compose.yml

这里贴出我的配置信息,可以按需配置

version: '3'
services:cloud-gateway:# 指定容器名称container_name: cloud-gateway# 重启机制restart: alwaysimage: openjdk:8volumes:# 挂载本地jar包路径 /docker-local/blog/jar- /docker-local/blog/jar/cloud-gateway.jar:/cloud-gateway.jar# 挂载日志- ./log:/logports:- "1000:1000"network_mode: hostenvironment:# 指定时区- TZ="Asia/Shanghai"command: java -jar cloud-gateway.jar --spring.profiles.active=test > cloud-gateway.jar.logants-user-service:# 指定容器名称container_name: ants-user-service# 重启机制restart: alwaysimage: openjdk:8volumes:# 挂载本地jar包路径- /docker-local/blog/jar/ants-user-service.jar:/ants-user-service.jar# 挂载日志- ./log:/logports:- "8001:8001"network_mode: hostenvironment:# 指定时区- TZ="Asia/Shanghai"command: java -jar ants-user-service.jar --spring.profiles.active=test > ants-user-service.jar.logcloud-oauth:# 指定容器名称container_name: cloud-oauth# 重启机制restart: alwaysimage: openjdk:8volumes:# 挂载本地jar包路径- /docker-local/blog/jar/cloud-oauth.jar:/cloud-oauth.jar# 挂载日志- ./log:/logports:- "6003:6003"network_mode: hostenvironment:# 指定时区- TZ="Asia/Shanghai"command: java -jar cloud-oauth.jar --spring.profiles.active=test > cloud-oauth.jar.log ants-web:# 指定容器名称container_name: ants-web# 重启机制restart: alwaysimage: openjdk:8volumes:# 挂载本地jar包路径- /docker-local/blog/jar/ants-web.jar:/ants-web.jar# 挂载日志- ./log:/logports:- "3001:3001"network_mode: hostenvironment:# 指定时区- TZ="Asia/Shanghai"command: java -jar ants-web.jar --spring.profiles.active=test > ants-web.jar.log     ants-manage:# 指定容器名称container_name: ants-manage# 重启机制restart: alwaysimage: openjdk:8volumes:# 挂载本地jar包路径- /docker-local/blog/jar/ants-manage.jar:/ants-manage.jar# 挂载日志- ./log:/logports:- "6002:6002"network_mode: hostenvironment:# 指定时区- TZ="Asia/Shanghai"command: java -jar ants-manage.jar --spring.profiles.active=test > ants-manage.jar.logredis:image: redis:latestcontainer_name: redishostname: redisrestart: alwaysports:- 6379:6379volumes:- ./config/redis/conf/redis.conf:/etc/redis/redis.conf   #挂载redis.conf不然后续重启redis密码会失效- ./config/redis/data:/dataenvironment:- TZ=Asia/Shanghai- LANG=en_US.UTF-8command: ["redis-server","/etc/redis/redis.conf"]          #指定配置文件启动redisnetwork_mode: host

点击立即构建,就进入了打包流程。

在这里插入图片描述

打包成功以后,可以看一下out目录下是否有文件。

在这里插入图片描述

这里面的文件都有target,然后只有一个jar包。

上面贴出来的脚本就是这些文件完成之后,把里面的代码进行copy到/docker-local/blog/jar目录下。

在这里插入图片描述

可以发现jar包下的文件也有了,接下来就是docker执行项目了。

这里会发现项目没有执行,因为需要给该目录增加权限。

在这里插入图片描述

chmod u+x /docker-local/blog/jar

开放端口

firewall-cmd --zone=public --add-port=1000/tcp --permanent
重启防火墙
firewall-cmd --reload

相关文章:

【学习Docker(七)】详细讲解Jenkins部署SpringCloud微服务项目,Docker-compose启动

Jenkins部署SpringCloud微服务项目,Docker-compose启动 座右铭:《坚持有效输出,创造价值无限》 本文介绍使用Jenkins部署SpringCloud微服务项目,Docker-compose启动。 之前写过安装Jenkins的过程,这里就不写安装细节了…...

时机将至,名创优品或将再掀起一波消费热浪

北京时间2月28日,名创优品发布2023财年中报,财报显示,2023财年第二季度营收规模有所收窄,但净利润、毛利率、门店数量均实现了不错的增长,总体表现可圈可点。 (资料来源:富途牛牛) …...

深圳大学计软《面向对象的程序设计》实验8 静态与友元

A. 旅馆旅客管理(静态成员) 题目描述 编写程序,实现某旅馆的客人住宿记录功能。 定义一个Customer类,要求输入客人的姓名,创建一个Customer对象。类声明如下: 调用类的Display函数输出客人ID&#xff…...

【基础算法】单链表的OJ练习(2) # 链表的中间结点 # 链表中倒数第k个结点 #

文章目录前言链表的中间结点链表中倒数第k个结点写在最后前言 对于单链表的OJ练习&#xff0c;需要深刻理解做题的思路&#xff0c;这样我们才能够在任何场景都能够熟练的解答有关链表的问题。 关于OJ练习&#xff08;1&#xff09;&#xff1a;-> 传送门 <-&#xff0c…...

vue路由文件拆分管理

随着项目的原来越大&#xff0c;路由越来越多&#xff0c;我们的路由也会越来越多&#xff0c;如果都集中在一个文件中&#xff0c;会很冗杂文件很长。这时候我们可以将路由文件拆分&#xff0c;可读、方便管理。多人合作添加路由也能更多的避免代码冲突 代码拆分目录如图&…...

实例解析Java反射

反射是大多数语言里都必不不可少的组成部分&#xff0c;对象可以通过反射获取他的类&#xff0c;类可以通过反射拿到所有方法&#xff08;包括私有&#xff09;&#xff0c;拿到的方法可以调用&#xff0c;总之通过“反射”&#xff0c;我们可以将Java这种静态语言附加上动态特…...

Android 9适配经验总结

目录四大组件适配Activity启动方式适配Service启动方式适配前台服务需要添加权限限制静态广播的接收限制ContentResolver数据更新操作权限与安全相关主要适配点运行时动态权限申请默认不支持 http 请求SharedPreferences 适配四大组件适配 Android 应用的开发离不开 Android 四…...

定时任务调度方案——Xxl-Job

定时任务调度方案 随着系统规模的发展&#xff0c;项目的组织结构以及架构越来越复杂&#xff0c;业务覆盖的范围越来越广&#xff0c;定时任务数量日益增多&#xff0c;任务也变得越来越复杂&#xff0c;尤其是为了满足在用户体量日历增大时&#xff0c;系统能够稳定运行&…...

操作系统引导

操作系统是一种程序&#xff0c;程序以数据的形式存放在硬盘中&#xff0c;而硬盘通常分为多个区&#xff0c;一个计算机中又有多个或多种外部设备。 操作系统引导指的是计算机利用CPU运行特定程序&#xff0c;通过程序识别硬盘&#xff0c;识别硬盘分区&#xff0c;识别硬盘分…...

[C#] 多线程单例子,分为阻塞型和分阻塞型, 在unity里的应用

在单例中使用多线程时&#xff0c;需要注意以下几点&#xff1a; 线程安全&#xff1a;在多线程环境下&#xff0c;单例对象可能被多个线程同时访问&#xff0c;因此需要确保单例的线程安全&#xff0c;避免出现数据竞争等问题。 对象创建&#xff1a;如果在单例对象的构造函数…...

使用MAT进行内存分析,并找到OOM问题

前言 在处理一次现场问题时&#xff0c;发现服务还在运行&#xff0c;但是出现假死情况&#xff0c;后通过分析GC日志以及使用MAT分析确定问题是内存溢出OutOfMemery(OOM)&#xff1b;这里只记录MAT分析学习过程,最近工作忙&#xff0c;补记录。 GC日志分析 首先&#xff0c;如…...

初识Python

目录初识Python1.Python简介Python的优缺点Python的应用领域2.安装Python解释器Windows环境Linux环境macOS环境3.运行Python程序确认Python的版本编写Python源代码运行程序代码中的注释4.Python开发工具IDLE - 自带的集成开发工具IPython - 更好的交互式编程工具Sublime Text -…...

tmux终端复用软件

一、安装[rootpool-100-1-1-159 test]# yum install tmux [rootpool-100-1-1-159 test]# yum search tmux Repository extras is listed more than once in the configuration Last metadata expiration check: 0:33:52 ago on Fri 03 Mar 2023 09:10:34 AM CST.Name Exactly M…...

IO详解(文件,流对象,一些练习)

目录 文件 文件概念 文件的路径 路径有俩种表示风格 文件类型 如何区分文本文件还是二进制文件? java对文件的操作 File类中的一些方法 流对象 流对象的简单概念 java标准库的流对象 1.字节流,(操作二进制数据的) 2.字符流 (操作文本数据的) 流对象最核心的四个…...

SpringCloud全家桶— — 【1】eureka、ribbon、nacos、feign、gateway

SpringCloud全家桶— — 组件搭建 1 Eureka 1.1 Eureka-server 创建eureka-server的SpringBoot项目 ①导入依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId…...

【线程安全篇】

线程安全之原子性问题 x &#xff0c;在字节码文件中对应多个指令&#xff0c;多个线程在运行多个指令时&#xff0c;就存在原子性、可见性问题 赋值 多线程场景下&#xff0c;一个指令如果包含多个字节码指令&#xff0c;那么就不再是原子操作。因为赋值的同时&#xff0c…...

错误:EfficientDet网络出现“No boxes to NMS“并且mAP:0.0的解决方案

近日&#xff0c;在使用谷歌新推出来的一个网络EfficientDet进行目标检测训练自己的数据集的时候&#xff0c;出现了如下错误&#xff1a; 其中项目开源地址是&#xff1a;https://github.com/toandaominh1997/EfficientDet.Pytorch 上面截图中的1和2代表我的类别名称。读者可…...

python的opencv操作记录13——区域生长及分水岭算法

文章目录图像区域基本算法——形态学运算腐蚀与膨胀开运算与闭运算opencv中的形态学运算距离计算——distanceTransform函数连通域连通的定义计算连通域——connectedComponents连通域实验基于区域的分割区域生长算法自定义一个最简单区域生长算法实现区域分割一般区域分割open…...

一文看懂网上下单的手机流量卡为什么归属都是随机的!

最近很多网上下单的小伙伴们心中似乎都有一个疑问。那就是网上很多手机卡、流量卡都不能自选号码和归属地&#xff0c;就算能自选号码&#xff0c;归属地也是随机的而且很多都不会跟你说具体的城市&#xff0c;这是为什么呢&#xff1f;莫非其中有什么不可告人的秘密吗?小伙伴…...

python Pytest生成alluer测试报告的完整教程

1.下载allure包到本地&#xff0c;解压 网上很多资料&#xff0c;这边不提供了 2.配置环境变量 将上面解压后bin文件的路径复制&#xff0c;添加到环境变量Path下 3.验证环境变量配置是否功 在cmd中输入allure&#xff0c;回车 。查看allure是否成功&#xff1a; 4.pyc…...

4-spring篇

ApplicationContext refresh的流程 12个步骤 prepareRefresh 这一步创建和准备了Environment对象&#xff0c;并赋值给了ApplicationContext的成员变量 要理解Environment对象的作用 obtainFreshBeanFactory ApplicationContext 里面有一个成员变量&#xff0c;Beanfactory b…...

提升 Web 应用程序的性能:如何使用 JavaScript 编写缓存服务

缓存是一种重要的优化技术&#xff0c;用于加速数据访问和降低服务器负载。缓存存储经常访问的数据&#xff0c;以便在需要时可以快速检索。在本文中&#xff0c;我们将探索如何使用简单的数据结构在 JavaScript 中编写缓存服务。 编码缓存服务的第一步是定义将用于访问缓存的…...

供应商绩效管理指南:挑战、考核指标与管理工具

管理和优化供应商绩效既关键又具有挑战性。要知道价格并不是一切&#xff0c;如果你的供应商在商定的价格范围内向你开具发票&#xff0c;但服务达不到标准或货物不合格&#xff0c;你也无法达到节约成本的目标。 供应商绩效管理可以深入了解供应商可能带来的风险&#xff0c…...

干货文稿|详解深度半监督学习

分享嘉宾 | 范越文稿整理 | William嘉宾介绍Introduction to Semi-Supervised Learning传统机器学习中的主流学习方法分为监督学习&#xff0c;无监督学习和半监督学习。这里存在一个是问题是为什么需要做半监督学习&#xff1f;首先是希望减少标注成本&#xff0c;因为目前可以…...

信箱|邮箱系统

技术&#xff1a;Java、JSP等摘要&#xff1a;在经济全球化和信息技术飞速发展的今天&#xff0c;通过邮件收发进行信息传递已经成为主流。目前&#xff0c;基于B/S&#xff08;Browser/Server&#xff09;模式的MIS&#xff08;Management information system&#xff09;日益…...

JS数组拓展

1、Array.from Array.from 方法用于将两类对象转为真正的数组&#xff1a; 类似数组的对象,所谓类似数组的对象&#xff0c;本质特征只有一点&#xff0c;即必须有length属性。 因此&#xff0c;任何有length属性的对象&#xff0c;都可以通过Array.from方法转为数组 和 可遍历…...

一道很考验数据结构与算法的功底的笔试题:用JAVA设计一个缓存结构

我在上周的笔试中遇到了这样一道题目&#xff0c;觉得有难度而且很考验数据结构与算法的功底&#xff0c;因此Mark一下。 需求说明 设计并实现一个缓存数据结构: 该数据结构具有以下功能&#xff1a; get(key) 如果指定的key存在于缓存中&#xff0c;则返回与该键关联的值&am…...

(10)C#传智:命名空间、String/StringBuilder、指针、继承New(第10天)

内容开始多了&#xff0c;慢品慢尝才有滋味。 一、命名空间namespace 用于解决类重名问题&#xff0c;可以看作类的文件夹. 若代码与被使用的类&#xff0c;与当前的namespace相同&#xff0c;则不需要using. 若namespace不同时&#xff0c;调用的方法&#xff1a…...

基于Jetson Tx2 Nx的Qt、树莓派等ARM64架构的Ptorch及torchvision的安装

前提 已经安装好了python、pip及最基本的依赖库 若未安装好点击python及pip安装请参考这篇博文 https://blog.csdn.net/m0_51683386/article/details/129320492?spm1001.2014.3001.5502 特别提醒 一定要先根据自己板子情况&#xff0c;找好python、torch、torchvision的安…...

MySQL存储引擎详解及对比和选择

什么是存储引擎&#xff1f; MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。通过选择不同的技术&#xff0c;你能够获得额外的速度或者功能&#xff0c;从而改善…...

精品资源共享课网站建设 碧辉腾乐/山东网页定制

List接口与实现类 List接口 特点&#xff1a;有序&#xff0c;有索引&#xff0c;可重复 常用方法&#xff1a;https://docs.oracle.com/javase/8/docs/api/ List是一个接口&#xff0c;继承于Collection的接口&#xff0c;代表着有序的队列。 ArrayList和LinkedList 作为…...

网站建设维护php/查收录网站

目前/ boot partition /文件夹没有足够的空间,无法执行软件更新.问题&#xff1a;我应该如何正确释放该目录中的一些空间&#xff1f;这是列表&#xff1a;rootmindaugas-ubuntu-14:/boot# ls -latotal 156607drwxr-xr-x 4 root root 3072 Kov 12 09:37 .drwxr-xr-x 24 root ro…...

中企动力做网站的优势/网站快速排名公司

在Android编程的过程中&#xff0c;如果在Activity中某个操作会运行比较长的时间&#xff0c;比如&#xff1a;下载文件。这个时候如果在主线程中直接下载文件&#xff0c;会造成Activity卡死的现象&#xff1b;而且如果时间超过5秒&#xff0c;会有ANR报错。在这种情况下&…...

dw做网站 后台用什么后台/列表网推广效果怎么样

2019独角兽企业重金招聘Python工程师标准>>> 在Linux shell 中启动图形界面的应用&#xff08;如eclipse&#xff09;&#xff0c;会遇到一个麻烦&#xff1a;即当不小心关闭或退出shell时&#xff0c;在该shell中启动的程序也会被结束。这在有些情况下是我们不想看…...

网站制作ppt/seo矩阵培训

list [("你好",{"a":1,"b":2})] for ok,value in list:print(ok)print(value)   结果&#xff1a; 搞定&#xff0c;是不是很快。 转载于:https://www.cnblogs.com/fh-fendou/p/7575426.html...

网站地址怎么做超链接/网站推广的方法有哪些

Cadence Allegro 画完PCB 铺完铜箔(覆铜)后&#xff0c;如果需要再对PCB进行布线检查或调整&#xff0c;总感觉那些shape好碍眼&#xff0c;Allegro 的铺铜 shape 能否设置得像 pads 一样&#xff0c;默认只显示铺铜边框或者默认不显示呢&#xff1f;Allegro 能否单独关闭铺铜s…...