ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

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

2022-02-28 05:31:07  阅读:440  来源: 互联网

标签:服务 admin SpringCloud eureka maven tensquare https Jenkins Docker


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打开前端页面

 

标签:服务,admin,SpringCloud,eureka,maven,tensquare,https,Jenkins,Docker
来源: https://www.cnblogs.com/darryallen/p/15937121.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有