本地项目打包成镜像并上传到 docker 仓库
前言在平时编写代码时,我们可以在本地跑通的项目有时候在别人那里就是出现各种莫名其妙的错误,从而产生了 “调试环境” 的时间,而解决环境问题所需要的时间也说不定,轻则几分钟,重则以天计单位。但这个时候如果让别人直接用我们 “现成” 的环境就可以直接解决。这个就是 Docker 镜像的作用之一,但别人要用我们的镜像,我们就需要先把自己的镜像经过打包、构建、发布等一系列操作才行。 Dockerfile 编写规则首先我们来看一下编写 Dockerfile 的各种命令 123456789101112131415161718192021222324252627# 设置基础镜像FROM openjdk:17-oracle# 添加元数据到镜像LABEL author="Sora33"# 设置环境变量ENV APP_HOME /app# 创建应用目录RUN mkdir $APP_HOME# 设置工作目录WORKDIR $APP_HOME# 复制文件到镜像COPY ./target/xxx.jar $APP_HOME# 安装依赖RUN apt-get update &&...
多服务器 Kubernetes 集群的部署
环境介绍 服务器及系统版本:2 台阿里云服务器,Cenos7.8 版本 Kubernetes 版本:最新版(截止本文时间 24 年 4 月 1 日,最新版为 1.29.3) 服务器配置:4 核 8G Docker 版本:最新版(截止本文时间 24 年 4 月 1 日,最新版为 26.0.0) cri-dockerd 版本:最新版(截止本文时间 24 年 4 月 1 日,最新版为 0.3.12) 网络插件 Calico 版本:最新版(截止本文时间 24 年 4 月 1 日,最新版为 3.27.2) 前置准备 2 台或以上阿里云服务器,配置至少为 4 核 8G 因为需要从 GitHub 上下载东西,需要可以下载东西的网络 教程内出现的所有命令,如未特殊标注则默认是在每台机器上都要执行!!! 本文会从机器基础配置、基础插件安装、docker 及其 cri-dockerd、Kubernetes 以及最后的可视化 kuboard 的安装,循序渐进,并且会在每一步进行对应的解析,来更好的帮助理解 机器基础配置1....
【从零开始的 K8s-02】ingress-nginx 的认识与使用
认识 Ingress-nginx我们先来看一下官网对于 ingress 的解释: Ingress 提供从集群外部到集群内服务的 HTTP 和 HTTPS 路由。流量路由由 Ingress 资源所定义的规则来控制。下面是 Ingress 的一个简单示例,可将所有流量都发送到同一 Service: 通俗的理解,我们可以将 ingress 理解为 cloud 项目里的网关,通过判断请求信息、请求路径后,转发到对应的服务内。 常见的 ingress 控制器有 ingress-nginx、Traefik、HAProxy Ingress 等等,但使用最多的还是 nginx,本文也会以 ingress-nginx 来做演示 PS:ingress-nginx 是 kubernetes 社区维护的,而 kubernetes-ingress 是 nginx 官方维护的,本文使用前者! minikube安装 Ingress-nginx 控制器运行下面的命令进行安装 1kubectl apply -f...
(自动化部署,CI/CD) 多环境多平台安装并使用 Jenkins
前言CI/CD 是持续化继承和持续化部署的简称。目的是在开发的过程中,尽可能的降低人工成本,来完成部署操作。通过 Jenkins 自动流水线工作可以省去很多时间,对于程序开发者而言,将部署 jar 包、修改环境、日志记录等一系列操作集成到 Jenkins 任务内,省时又省力,本次将以 Jenkins 为核心进行从 0 到 1 的搭建与使用,并提供了 Java 单体项目与微服务的通用 shell 脚本供于使用。 环境说明本文通过两种方式进行演示,第一种是基于 Docker 完成 Jenkins 的安装与应用,Docker 使用版本为 25.0.3;第二种是直接在本机上安装 Jenkins(本人主机为 Mac,所以使用 Mac 来安装,Linux 基本也是一样的) 基于 Docker 的 Jenkins 更多适合训练,因为所有的操作都在容器内、方便后续转移以及迁移。但缺点是 Jenkins 与宿主机的环境不互通,如在容器打完的 jar 包只能放在挂载的目录里。而且 Java 项目需要连接的中间件也非常多、且因为 jar 包是跑在 Jenkins...
mybatis-flex 框架的学习与使用
前言最近发现了这个新框架,想着学习一下发现网上的教程几乎全是对官网的复制粘贴…… 很多细节要点都没有告诉你,很容易让人看的一头雾水,所以自己跟着官网文档做了一个示例 Demo,写个教程做记录,也分享给需要的各位(后面会使用 flex 指代 mybatis-flex、plus 指代 mybatis-plus) 常见问题这里我把常见问题放在前面是因为有很多坑,所以我想先把我踩过的坑列出来,提前了解,不然后面问题很多不好解释。这些坑我也都是从官网找的对应解决方法,在这里放出来同时加深一下印象。 如何使用分页 以前我们 mybatis-plus 会搭配 pagehelper-spring-boot-starter 依赖来实现分页,但是使用 mybatis-flex 后,请注意,将分页依赖更换为 pagehelper 依赖 原因是 pagehelper-spring-boot-starter 依赖的 mybatis-spring-boot-starter 会使 flex 启动异常,导致查询时参数赋值不上,会产生《No value specified for parameter...
在 Java 后端实现对 xxlJob 的任务管理
前言最近需要在 Java 后端操作 xxl 任务调度平台来完成任务的加入,在网上找了发现全都需要修改 admin 服务,对于已经上线的项目来说,明显不好操作切繁琐,修改 admin 服务的原因也很简单,是因为在外部直接调用添加、修改任务方法时,会被拦截告诉未登陆,因此需要在源码内多补充几个方法同时加上绕过登陆的注解。那么有没有一种办法可以不修改源码也可以操作 admin 服务内的方法呢。看了 xxlJob 的源码部分发现是可行的,在页面内我们可以发现登陆 xxlJob 后会返回一个 cookie,那么我们就借助这个 cookie 来辅助我们登陆! 不了解 xxlJob 的朋友可以看一下上一篇:项目接入 xxl-job 工具类介绍及使用我自己已经封装了一个工具类用来帮助我们操作 admin 服务,使用也很简单。首先对工具类进行一个简单的介绍,流程框架为 调用登陆方法获取 cookie >>> 携带 cookie 和参数访问指定方法 >>> 返回结果 在使用工具类之前,我们只需要手动修改三个值以及引入一个实体类即可,分别是 xxlJob...
【从零开始的 K8s-01】基于 minikube 搭建一个本地 K8s 环境
前言minikube 可以做到在本地部署 kubernetes (也叫 K8s,后面会用 K8s 指代 kubernetes) 环境、以单节点集群环境运行,非常方便个人测试和学习。个人也打算使用 minikube 来当作练手,在差不多搞清楚 K8s 的运作原理以及各种配置后,再上多台服务器搭建的真正的 K8s 环境。所以希望本文可以帮助更多人以更轻松的方式学习,并初步了解 K8s 究竟是什么东西。 多台服务器的 Kubernetes 搭建 minikube这里先放上源代码,以及 K8s 的官网 minikube minikube(github) kubenates 正如前面所说,minikube 可以在本地计算机上运行单节点 Kubernetes 集群的工具。易于安装和使用,那么我们首先需要在本地安装 minikube 安装 minikubePS:请先安装好 docker 再继续下面的步骤,因为 minikube 需要依赖于虚拟化软件来创建和管理虚拟机;本人只有 mac 环境是自己走了一遍,windows 与 linux...
微服务项目基于 springdoc 快速接入 swagger3
环境说明 SpringBoot:3.0.2 SpringCloud:2022.0.0 SpringCloudAlibaba:2022.0.0.0-RC2 jackson:2.15.2 springdoc:2.2.0 这里也放一张官方与 SpringBoot 的版本关系 本次是基于 SpringBoot3 搭建的微服务做演示,因为升级 SpringBoot3 后,重构升级了很多东西,所以重新把 swagger 的引入记录一下。不过好消息是接入与使用非常简单。 我这里简单说一下我的项目结构,基本上是和 ruoyi 一样的 主要是 common,这里我们也只需要关注 swagger 模块即可。我在 common 下新建了一个模块,名为 swagger。主要作用是把 swagger 相关的东西放在这,方便管理。之后其他业务模块只需要引入 sora-common 即可完成对 swagger 的引入。后面也会基于此环境进行搭建与演示。 依赖引入在 swagger 模块内引入 springdoc 依赖(只需要引入此依赖即可) 12345<dependency> ...
okHttp 的使用
项目的通信在开发的过程中,我们平时会面临两种通信,一种是项目之间的通信,一种是项目以外的通信。对于前者,我们通常会使用 openFeign 来解决。而项目以外的通信我们则会有 restTemplate、okHttp 以及 Retrofit 等众多通信框架。我之前也是一直使用 restTemplate,但最近接触到 okHttp 发现,用着比 restTemplate 更省心更方便一点,并且支持异步通信。这次就针对 okHttp 来简单做一下文章。 为什么选择 okHttp从性能方面考虑,其支持 HTTP2 并且使用链接池复用资源;在实际使用方面,只需要进行一次封装,后续即可直接调用,省心省力;最后就是支持异步通信功能;这些对于日常开发完全够用了,下面直接在项目中进行演示 项目实践引入依赖1234567891011121314151617181920<!--okhttp--><dependency> <groupId>com.squareup.okhttp3</groupId> ...
关于 Excel 的导入导出和文件的下载
快速介绍我们平时开发中或多或少会接触 Excel 的使用,尤其是对于一些页面列表的导出。在项目里我们可能使用的是架构师给我们封装好的工具类,又或者是 EasyPoi,还有阿里的 EasyExcel 等等。甚至一个项目组内每个人都有自己对应的实现方式。属实有点乱。包括写这篇文章的时候,我试着去用了一下阿里的 EasyExcel,按照官网的意思,速度导出快,资源占用少。我也实际用了一下。速度肯定要比 EasyPoi 要快的。这次的文章就以 EasyExcel 为基础来讲解了,但是!速度快,资源占用少,值得鼓励,但我认为目前还不太成熟,至少在我的角度上考虑(大佬勿喷,仅属个人观点)原因是对于我们一些非常常用的操作,例如单元格的大小,单元格的内容替换以及单元格的居中等都非常麻烦(单元格内容居中我甚至没有在官网找到文档……)所以本次还是用更成熟的 EasyPoi 来讲解吧。 POI 的使用我们只需要导入一个依赖即可使用。我使用的是目前最新版本 5.0.0 12345<dependency> ...