分布式金融项目实战基于SpringCloudAlibaba

分布式金融项目实战基于SpringCloudAlibaba

 

003:基于GitLab代码管理与分布式配置中心

 

1 将Api微信接口项目发布到Maven私服

今日课程任务

  1. 构建企业级GitLab代码管理平台
  2. GitLab代码管理平台账号密码分配与初始化
  3. 构建企业级Nacos分布式配置中心
  4. Nacos分布式配置中心多环境配置

发布每特教育Api接口的项目
注意创建Maven仓库的时候选择 SNAPSHOT 快照版本

<!--指定仓库地址 -->
<distributionManagement>
    <repository>
        <!--此名称要和.m2/settings.xml中设置的ID一致 -->
        <id>mayikt</id>
        <url>http://8.133.186.19:8081/repository/mtmayikt_snapshot/</url>
    </repository>
</distributionManagement>
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

先在父pom的目录下,执行mvn install。然后再到子目录执行mvn dependency:tree
否则报错(找不到mt-shop-service-api-base,微信项目依赖该jar包)
分布式金融项目实战基于SpringCloudAlibaba

2 基于Docker构建企业级GitLab代码管理

构建企业级代码仓库管理中心
常用的代码仓库管理有Git/SVN 、码云、GitLab等。
GitLab详细百度百科版本的介绍:
https://baike.baidu.com/item/gitlab/3059600?fr=aladdin
注意:GitLab消耗服务器内存非常大,一般的云服务器很难跑起来。

基于Docker部署GitLab环境搭建
建议虚拟机内存2G以上
1.下载镜像文件

docker pull beginor/gitlab-ce:11.0.1-ce.0
 
  • 1

注意:一定要配置阿里云的加速镜像
2.创建GitLab 的配置 (etc) 、 日志 (log) 、数据 (data) 放到容器之外, 便于日后升级, 因此请先准备这三个目录。

mkdir -p /mnt/gitlab/etc
mkdir -p /mnt/gitlab/log
mkdir -p /mnt/gitlab/data
 
  • 1
  • 2
  • 3

容器中里面ect gitlab配置文件同步到外部(映射)
3.运行GitLab容器

docker run \
    --detach \
    --publish 8443:443 \
    --publish 8090:80 \
    --name gitlab \
    --restart unless-stopped \
    -v /mnt/gitlab/etc:/etc/gitlab \
    -v /mnt/gitlab/log:/var/log/gitlab \
    -v /mnt/gitlab/data:/var/opt/gitlab \
    beginor/gitlab-ce:11.0.1-ce.0
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

4.修改/mnt/gitlab/etc/gitlab.rb
把external_url改成部署机器的域名或者IP地址
(原:# external_url ‘GENERATED_EXTERNAL_URL’)

vi /mnt/gitlab/etc/gitlab.rb
external_url 'http://192.168.0.121'
 
  • 1
  • 2

5.修改/mnt/gitlab/data/gitlab-rails/etc/gitlab.yml

vi /mnt/gitlab/data/gitlab-rails/etc/gitlab.yml
找到关键字 * ## Web server settings * 
将host的值改成映射的外部主机ip地址和端口,这里会显示在gitlab克隆地址
192.168.0.121
将port改为8090
 
  • 1
  • 2
  • 3
  • 4
  • 5

6.先停止docker容器再重新启动
docker ps
docker stop $gitlabId
docker start $gitlabId
到此为止,gitlab的web管理页面就可以正常访问
分布式金融项目实战基于SpringCloudAlibaba
修改默认root账户密码 maplefire

GitLab创建项目
分布式金融项目实战基于SpringCloudAlibaba

3 项目导入到GitLab和拉取代码

Idea将代码上传到GitLab中

  1. 首先idea安装gitlab的插件 GitLab Projects
  2. 创建仓库
    VCS->Import into Version Control->Create Git Repository->选择mt-shop-parent
  3. 点击项目提交代码
    Git->Commit Directory(.idea文件夹下内容不勾选)
  4. 将代码提交到GitLab
    Git->push 点击Define remote输入url
    http://192.168.0.121:8090/root/mt-shop-parent.git
    输入git账号和密码

从gitlab中拉取我们的代码
File->New->Project from Version Control
输入地址 账号即可

解决GitLab下载地址不展示ip问题
上文第3步运行Gitlab容器代码如果是–publish 8090:8090 \,则第4步修改/mnt/gitlab/etc/gitlab.rb中external_url地址也要加端口号8090,如:
external_url ‘http://192.168.0.121:8090’

4 Nacos配置中心架构实现原理

构建分布式配置中心Nacos
分布式配置中心可以实现不需要重启服务器,动态的修改配置文件内容,常见的配置中心有携程的阿波罗、SpringCloud Config、Nacos轻量级的配置中心等。
分布式金融项目实战基于SpringCloudAlibaba
启动nacos windows双击startup.cmd文件
Linux:sh startup.sh -m standalone

在Naocs平台中创建配置文件
Data ID:名称(默认为服务器名称)-版本.properties|yaml;

5 SpringBoot项目整合Nacos配置中心

整合Nacos配置中心
Maven依赖的配置

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    <version>0.2.2.RELEASE</version>
</dependency>
 
  • 1
  • 2
  • 3
  • 4
  • 5

bootstrap.yml

server:
  port: 7070
spring:
  application:
    name: mayikt-member
  cloud:
    nacos:
      discovery:
        ##nacos服务注册地址
        server-addr: 8.133.186.19:8848
        ## nacos配置中心
      config:
        server-addr: 8.133.186.19:8848
        file-extension: yaml
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

注意nacos客户端读取配置文件的配置文件名称一定为bootstrap.yml或者是properties,否则无法加载到远程读取到该配置文件。
测试效果:
分布式金融项目实战基于SpringCloudAlibaba
注意:想要动态刷新配置文件,实现类上需要加注解@RefreshScope

6 将本地项目所有配置文件迁移到nacos

哪些配置文件应该放入到nacos配置中心中
经常需要发生变化的、sit/pre/prd环境都不一样的配置、数据源/第三方配置、开关等
分布式金融项目实战基于SpringCloudAlibaba

7 Nacos多个不同的环境配置

多环境不同的版本区分
分别在nacos服务器端创建
mayikt-member-dev.yaml
mayikt-member-prd.yaml
配置文件切换,bootstrap.yml文件中加入
spring: profiles: active: dev(prd)直接切换
分布式金融项目实战基于SpringCloudAlibaba

 

 

上一篇:docker gitlab gitalb-runner实现自动化部署


下一篇:gitlab修改用户密码