腾讯云mall3s模块发布流程 #

注:IDE为VS的,可以右击项目添加Dockerfile支持,VS生成请勿修改,如有命名需要修改的,宁愿重新生成,也不要手改。

命名 #

镜像名和容器名原则上要求一致,命名规则【mall3s-项目名-环境名】,镜像和容器需在相应环境命名空间上创建,如“mall3s-system-test”镜像所在命名空间“erp-base-test”,容器所在命名空间“base-test”(由于镜像命名空间base-test已被占用,因此放在“erp-base-test”)。

镜像构建规则 #

目前要求发布(test/prod)需要打tag发布,因此镜像构建触发规则,需要选择“符合分支或标签规则时构建”,值填写“^refs/tags/项目名_环境名_v版本.+$”。

注:如测试环境打tag不便,大家可提意见,非一成不变的

如我们的“system”系统test环境,触发规则如图所示,当我们在gitlab上打tag"system_test_v0.0.1",则触发构建镜像。

img

容器 #

如图2-3-1所示,容器,主要增加环境变量 ASPNETCORE_ENVIRONMENT : 环境,如 ASPNETCORE_ENVIRONMENT : Testing(测试环境,对应项目文件appsettings.环境名.json)

容器端口使用80

注:无需开放外网

图2-3-1

img

接入nacos #

容器启动时,自动接入(指连接nacos)。

接入网关 #

注:mall3s中,网关域名跟主域名一致,因此接口默认增加"/gateway"

需要在nacos“配置管理” -> “配置列表”对应的环境中配置router.yaml

配置及其解释如下:

http://erp.mall3s.com/gateway/system/api/

spring:
  cloud:
    gateway:
      routes:
        # erp基础系统
        - id: mall3s-webapi-system #路由命名,无特殊含义,需要唯一,使用nacos服务名即可
          uri: lb://mall3s-webapi-system #规则:lb://nacos服务名,万万不可随意写,网关会根据这个寻找真实ip
          predicates:
            - Path=/system/api/** #可以理解为nginx的location,命名规则【/模块名/项目真实url前缀/**】,(“目真实url前缀”可不要,但要保证不跟其他路由混淆)
          filters:
            - StripPrefix=1 #可以理解为上面多少段去掉就是url真实地址
      httpclient:
        connect-timeout: 30000 #链接超时时间
        response-timeout: 30s  #相应超时时间
gateway:
  white: /system/api/system/SysConfig,/system/api/File/Download #白名单,不需要认证的url列表,用英文逗号“,”分隔

此处以服务“mall3s-webapi-system”为例,nacos test环境服务名为“mall3s-webapi-system”,需要增加白名单链接“/system/api/system/SysConfig”和“/system/api/File/Download”;

注:白名单目前只对网关有效,如项目也有认证,需自行去除该接口(白名单的接口)的认证(白名单:理解为不需要登录即可访问。认证:可以理解为有没有登录的意思)。

链路:

如/system/api/File/Download

1、url向网关请求:http://test.erp.mall3s.com/gateway/system/api/File/Download;(若网关地址为http://xxx.xxx.xxx/gateway)

2、网关路由在配置表寻找到“/system/api/**”,则定位此配置;

3、通过uri,网关知道该寻找服务名为“mall3s-webapi-system”的服务,并找到该服务对应的所有IP,根据算法取其中一个ip(如此地址为127.0.0.1,端口80);

4、通过filters:StripPrefix可知,去掉一位占位符,就是真实地址。网关获取到真实地址为:http://127.0.0.1/api/File/Download;

5、网关请求真实地址,返回结果。

PS:网关其他配置方式暂不标注,避免大家混淆。

接入前端 #

前端配置网关地址默认已增加“/gateway”,因此,如果部署的项目,在路由配置了前缀,如/demo/api(如项目默认前缀为“api”),那前端的地址,只需要在真实地址前增加“/demo”字符串即可。

上次更新: 3/20/2023, 3:51:59 AM