Jenkins+Docker+SpringCloud 微服务持续集成(微服务+前端+数据库+后端)
Jenkins+Docker+SpringCloud持续集成流程说明

大致流程说明:
1) 开发人员每天把代码提交到Gitlab代码仓库
2) Jenkins从Gitlab中拉取项目源码,编译并打成jar包,然后构建成Docker镜像,将镜像上传到Harbor私有仓库。
3) Jenkins发送SSH远程命令,让生产部署服务器到Harbor私有仓库拉取镜像到本地,然后创建容器。
4) 最后,用户可以访问到容器
服务列表(红色的软件为需要安装的软件,黑色代表已经安装)
|
服务器名称 |
IP地址 |
安装的软件 |
|
代码托管服务器 |
192.168.10.10 |
Gitlab |
|
持续集成服务器 |
192.168.10.20 |
Jenkins,Maven,Docker18.06.1-ce |
|
Docker仓库服务器 |
192.168.10.60 |
Docker18.06.1-ce,Harbor1.9.2 |
|
生产部署服务器 |
192.168.10.70 |
Docker18.06.1-ce |
SpringCloud微服务源码概述
项目架构:前后端分离
后端技术栈:SpringBoot+SpringCloud+SpringDataJpa(Spring全家桶)
微服务项目结构:

- tensquare_parent: 父 工 程 , 存 放 基 础 配 置
- tensquare_common:通用工程,存放工具类
- tensquare_eureka_server:SpringCloud的Eureka注册中心
- tensquare_zuul:SpringCloud 的 网 关 服 务
- tensquare_admin_service:基础权限认证中心,负责用户认证(使用JWT认证)
- tensquare_gathering:一个简单的业务模块,活动微服务相关逻辑
数据库结构:

- tensquare_user:用户认证数据库,存放用户账户数据。对应tensquare_admin_service微服务
- tensquare_gathering:活动微服务数据库。对应tensquare_gathering微服务
微服务配置分析:
- tensquare_eureka
- tensquare_zuul
- tensquare_admin_service
- tensquare_gathering
一、本地部署(1)--SpringCloud微服务部署
1、本地运行微服务
(1)逐一启动微服务
微服务项目包解压,目录在idea中打开,idea会自动下载相关组件插件(等待时间较长)
Jenkins+Docker 链接:https://pan.baidu.com/s/1CIsWzLPrbz1yMZE2lA3Q6g 提取码:o5n5





(2)项目导入后发现都是红色的(不正常),缺少依赖组件,安装maven,Windows本地配置Maven环境
Maven官网:https://maven.apache.org/download.cgi

apache-maven-3.8.4-bin.zip包 链接:https://pan.baidu.com/s/1PjhUt58AWhSuC2Xh_wi_lg 提取码:tiqr
解压后放到指定目录

打开解压后的maven文件,添加两个变量
此电脑→属性→高级系统设置→高级→环境变量→系统变量→新建

M2_HOME E:\apache-maven-3.8.4 MAVEN_HOME E:\apache-maven-3.8.4



maven的命令放进系统变量的 PATH 中


打开命令提示符cmd,输入mvn -v 查看版本

2、修改配置文件组件下的地址设置
(1)在E盘下:新建一个maven组件下载的本地仓库repo
//配置组建仓库地址 <localRepository>E:/repo</localRepository>
//配置下载源:阿里源 <mirror> <id>aliyunmaven</id> <mirrorOf>central</mirrorOf> <name>aliyun maven</name> <url>https://maven.aliyun.com/repository/public </url> </mirror>


(2)设置 idea


(3)设置完成会自动更新

解决:SpringBoot启动类报错can not resolve method 'run(java.lang.class,String [])'问题






pom.xml 里添加构建的依赖
<build>
<plugins>
<plugin>
<!--提供打包(将应用打包成可执行的jar包)-->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<!-- 指定maven编译的jdk版本 -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<verbose>true</verbose>
<fork>true</fork>
<!--jdk地址-->
<executable>C:/Program Files/Java/jdk1.8.0_152/bin/javac</executable>
</configuration>
</plugin>
</plugins>
</build>

本地数据库导入
1、windows本地安装 mysql5.7
链接:https://pan.baidu.com/s/1HR_0GN3BhRZLwAslEHDGHw 提取码:a0eg




2、安装完成后,添加环境变量
C:\Program Files\MySQL\MySQL Server 5.7\bin

把 tensquare_gathering.sql、tensquare_user.sql 库放到 E盘:
链接:https://pan.baidu.com/s/11dG69iZ4fUOK8nrpPt2RDw 提取码:asme


本地打开服务:输入cmd



二、启动 enreka 服务
1、修改配置文件application.yml
E盘→IdeaProjects→tensquare_parent→tensquare_eureka_server→src→main→resources→application.yml
# 单机版 server: port: 10086 #基本服务器信息 spring: application: name: eureka-server #服务ID #enreka服务器配置 eureka: client: fetch-registry: false #单机版关闭enreka相互注册 register-with-eureka: false service-url: defaultZone: http://localhost:${server.port}/eureka #暴露eureka服务访问地址 server: enable-self-preservation: false #关闭自我保护

启动 Eureka


访问 enreka 地址 http://localhost:10086


2、开启网关zuul
application.yml 文件所在路径 E:\IdeaProjects\tensquare_parent\tensquare_zuul\src\main\resources
server: port: 10020 # 端口 # 基本服务信息 spring: application: name: tensquare-zuul # 服务ID # Eureka配置 eureka: client: service-url: defaultZone: http://localhost:10086/eureka # Eureka访问地址 instance: prefer-ip-address: true # 修改ribbon的超时时间 ribbon: ConnectTimeout: 1500 # 连接超时时间,默认500ms ReadTimeout: 3000 # 请求超时时间,默认1000ms # 修改hystrix的熔断超时时间 hystrix: command: default: execution: isolation: thread: timeoutInMillisecond: 2000 # 熔断超时时长,默认1000ms # 网关路由配置 zuul: routes: admin: path: /admin/** serviceId: tensquare-admin-service gathering: path: /gathering/** serviceId: tensquare-gathering # jwt参数 jwt: config: key: itcast ttl: 1800000



刷新页面

3、开启权限中心 tensquare_admin_service
修改这几处即可: url: jdbc:mysql://localhost:3306/tensquare_user?characterEncoding=UTF8 username: root password: abc123 url: jdbc:mysql://localhost:3306/tensquare_user?characterEncoding=UTF8


出现报错信息:Failed to start connector [Connector[HTTP/1.1-9001]
原因:端口被占用,改为其他端口 如:port:9000
重新运行,则成功。


4、开启活动的微服务 tensquare_gathering



所有服务全部开启

测试
1、安装 postman 工具

链接:https://pan.baidu.com/s/166OAGlMHUf5X54VQqQSQsw 提取码:wa65
运行并打开


选择 post 方式,输入http://localhost:10020/admin/admin/login



令牌:
eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiIxMTk0MjgxNTMzMjMwNDE5OTY4Iiwic3ViIjoiYWRtaW4iLCJpYXQiOjE2NDU5OTE5MzcsInJvbGVzIjoiYWRtaW4iLCJleHAiOjE2NDU5OTM3Mzd9.8rqFJ6mJsVna9YpCgYWxEiOGGa0hj5DAnzpTs9cNnrQ

使用用户:admin;密码:123456 登录,
登录成功则说明 微服务+前端+数据库连接成功。


查看数据库数据

刷新网页
前端→微服务→ 数据库 所有的数据提取没有任何问题

编辑修改数据,数据库里面的数据也随之更改


在 idea 环境中先打 eureka 的 jar 包
(使用:mvn clean package)
需要等待下载

直接打包会报错:

原因:没有配置jdk目录
<build>
<plugins>
<plugin>
<!--提供打包(将应用打包成可执行的jar包)-->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<!-- 指定maven编译的jdk版本 -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<verbose>true</verbose>
<fork>true</fork>
<!--jdk地址-->
<executable>C:/Program Files/Java/jdk1.8.0_152/bin/javac</executable>
</configuration>
</plugin>
</plugins>
</build>

打包前把所有服务停止运行,为了测试微服务可以是某一个服务独立运行,停止服务后网页会无法访问

1、开始打 jar 包


在 target 目录中生成 jar 包

查看 jar 里的内容


2、本地运行微服务的 jar 包

打开cmd运行
注意:在运行前,关闭idea中的eureka服务,不然会出现冲突
java -jar tensquare_eureka_server-1.0-SNAPSHOT.jar


3、http://localhost:10086 刷新网页

三、本地部署(2)——前端静态
web 网站
前端技术栈:NodeJS+VueJS+ElementUI
1、本地运行(安装VScode)
VSCodeUserSetup-x64-1.64.2.exe 软件包: 链接:https://pan.baidu.com/s/1gl7VCU0SJOX355f0CkhFtQ 提取码:czi3

把 tensquareAdmin.rar 压缩包放到 E盘下,解压
链接:https://pan.baidu.com/s/1X2EvS4LVhnU5b3m0MFbruA 提取码:vqx3

打开VScode,把文件夹导进来


2、本地安装 nodejs

node-v16.14.0-x64.msi 链接:https://pan.baidu.com/s/1FT3zGi09MT2t2Zej1qnE7Q 提取码:vpq5

因为要用到 npm 命令,所以要把此路径放进环境变量中


用管理员身份运行cmd

在此路径下输入cmd

输入:npm run dev,出现报错


解决方法:
安装 Python2

python-2.7.2.amd64.msi 链接:https://pan.baidu.com/s/1j9e121LZN8XfM2kHfFzeJw 提取码:zwu5

加入环境变量中


在路径E:\tensquareAdmin下输入cmd
npm install -g cnpm --registry=https://registry.npm.taobao.org

cnpm uninstall node-sass

再执行cnpm install node-sass

输入 cnpm run dev ,安装完成后会自动弹出前端网页或手动输入:http://localhost:9528打开前端页面





浙公网安备 33010602011771号