分布式金融项目实战基于SpringCloudAlibaba
003:基于GitLab代码管理与分布式配置中心
1 将Api微信接口项目发布到Maven私服
今日课程任务
- 构建企业级GitLab代码管理平台
- GitLab代码管理平台账号密码分配与初始化
- 构建企业级Nacos分布式配置中心
- 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包)
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管理页面就可以正常访问
修改默认root账户密码 maplefire
GitLab创建项目
3 项目导入到GitLab和拉取代码
Idea将代码上传到GitLab中
- 首先idea安装gitlab的插件 GitLab Projects
- 创建仓库
VCS->Import into Version Control->Create Git Repository->选择mt-shop-parent - 点击项目提交代码
Git->Commit Directory(.idea文件夹下内容不勾选) - 将代码提交到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轻量级的配置中心等。
启动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,否则无法加载到远程读取到该配置文件。
测试效果:
注意:想要动态刷新配置文件,实现类上需要加注解@RefreshScope
6 将本地项目所有配置文件迁移到nacos
哪些配置文件应该放入到nacos配置中心中
经常需要发生变化的、sit/pre/prd环境都不一样的配置、数据源/第三方配置、开关等
7 Nacos多个不同的环境配置
多环境不同的版本区分
分别在nacos服务器端创建
mayikt-member-dev.yaml
mayikt-member-prd.yaml
配置文件切换,bootstrap.yml文件中加入
spring: profiles: active: dev(prd)直接切换