Jenkins+Docker+SpringCloud微服务持续集成(一):微服务部署
链接:https://pan.baidu.com/s/1HR3Q-cojnCidRy1xrdlOxg
提取码:7m56
--来自百度网盘超级会员V3的分享
Jenkins+Docker+SpringCloud持续集成流程说明
大致流程说明:
1)开发人员每天把代码提交到Gitlab代码仓库
2)Jenkins从Gitlab中拉取项目源码,编译并打成jar包,然后构建成Docker镜像,将镜像上传到Harbor私有仓库。
3)Jenkins发送SSH远程命令,让生产部署服务器到Harbor私有仓库拉取镜像到本地,然后创建容器。
4)最后,用户可以访问到容器
服务列表
服务器名称 | IP地址 | 安装的软件 |
---|---|---|
代码托管服务器 | 192.168.195.180 | Gitlab |
持续集成服务器 | 192.168.195.181 | Jenkins,Maven,Docker18.06.1-ce |
Docekr Harbor服务器 | 192.168.195.183 | Docker18.06.1-ce,Harbor1.9.2 |
生产部署服务器 | 192.168.195.184 | 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)逐一启动微服务
微服务项目包解压,目录在idea中打开,idea会自动下载相关组件插件(等待时间较长)
缺少依赖组建
安装maven
Windows本地配置maven环境
Maven官网:https://maven.apache.org/download.cgi
解压目录
添加两个变量
修改配置文件组建下载地址设置
E:\apache-maven-3.8.4\conf\settings.xml
点击查看代码
//配置组建仓库地址
<localRepository>E:/repo</localRepository>
//配置下载源
<mirror>
<id>aliyunmaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>https://maven.aliyun.com/repository/public </url>
</mirror>
自动更新
解决:解决SpringBoot启动类报错can not resolve method 'run(java.lang.class,String [])'问题
本地数据库导入(windows本地安装mysql5.7)
配置文件修改为单机版本微服
启动enreka服务
修改配置文件application.yml
点击查看代码
修改配置文件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 #关闭自我保护
访问enreka地址
开启网关zuul
开启权限中心
开启活动的微服务
所有服务全部开启
在eureka页面中服务全部注册成功
测试:
安装postman工具
运行并打开
登录成功
获取token
获取数据库信息成功
在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>
打包后在target下产生jar包
在target目录中生成jar包
2)本地运行微服务的jar包
打开cmd运行
java -jar xxx.jar
注意:在运行前,关闭idea中的eureka服务,不然会出现冲突
本地浏览器http://localhost:10086
本地部署(2)-前端静态web网站
前端技术栈:NodeJS+VueJS+ElementUI
1)本地运行(安装nodejs)
Vscode终端中运行:npm run dev
解决方法:
安装Python2
npm install -g cnpm --registry=https://registry.npm.taobao.org
使用cmd切换到tensquareAdmin目录下执行cnpm uninstall node-sass
再执行cnpm install node-sass
最后执行:cnpm run dev 成功
1)打包静态web网站
npm run build
打包后,产生dist目录的静态文件
2)部署到nginx服务器
把dist目录的静态文件拷贝到nginx的html目录,启动nginx
3)启动nginx,并访问
http://localhost:82