8. APP部署文档

8.1. 后端 k8s部署方式

8.1.1. 软件和环境准备

  • 软件依赖

软件 版本 描述
docker 18+ docker容器服务
docker-compose v1.26+
redis集群 7.2+
mysql V8+ mysql数据库
可访问的Docker镜像服务 - 存储镜像
  • 硬件依赖

配置 最低配置 推荐配置
CPU 1.5GHz 2.4GHz
内存 8GB 16GB
核心 4核 8核
带宽 2Mb 10Mb

8.1.1.1. Kubernetes集群

  • 确保已有一个运行中的Kubernetes集群,版本建议为v1.18或更高。

  • 已安装并配置kubectl命令行工具,用于与Kubernetes集群交互

8.1.1.2. Docker镜像仓库

  • 项目方准备一个公网可访问的Docker镜像仓库,用于存储“DID APP后台”微服务的镜像。在后续运行部署流程时会自动拉取。

  • 如果Kubernetes所在环境无法访问互联网,需要手动载入Docker镜像到Kubernetes的Worker节点。载入命令在物料包中,执行以下流程:

# did-app-backend-cc95b9d69-djk2f
  docker pull hub-dev.cnbn.org.cn/opennet/did-app-backend:v1.1.0
  docker save did-app-backend-v1.1.0.tar hub-dev.cnbn.org.cn/opennet/did-app-backend:v1.1.0
# 上传文件 did-app-backend-v1.1.0.tar 到服务器
  docker load -i did-app-backend-v1.1.0.tar

8.1.2. 部署流程

  • 下载部署仓库: https://git.chainweaver.org.cn/chainweaver/did/did-app-backend

  • 在下载的仓库的k8s目录下,即是k8s的部署did-app-backend-deployment.yaml,该文件是服务的部署文件,也是did-app-backend-configmap配置文件

【注意:DID APP后台服务在启动时会自动连接数据库并创建对应的表,在配置数据库连接字符串时,请确保数据库已经创建,而且账号具有在该数据库中创建表的DDL权限】

8.1.2.1. 根据实际需要修改ConfigMap

在实际项目使用中可能会存在测试环境、预生产环境、生产环境等多套环境,请根据实际环境的需求调整ConfigMap中的参数。如复制份数、日志输出等。

8.1.2.2. 修改did-app-backend-configmap

修改did-app-backend-deployment.yaml中的ConfigMap配置(以下是一些关键的配置描述):

  • mysql:改为实际的数据库的服务配置

  mysql:
      #数据库类型,例如mysql、kingbase
      db_type: "mysql"
      #数据库服务登录信息
      dsn: root:passw0rd@tcp(192.168.1.35:3311)/did_app_manage?charset=utf8&parseTime=True&loc=Local
      max_idle_conns: 10
      max_open_conns: 100
      time_out: 20
  • email_auth_code:改为实际发邮件的服务配置

  email_auth_code:
      #邮箱服务配置
      host: "xxx"
      #邮箱服务端口
      port: 11465
      #邮箱服务账号
      username: "xxx"
      #邮箱服务密码
      passwd: "xxx"
      #邮箱服务发件人
      from: "xxx"
      #邮箱验证码有效期
      expiration_time: 300
      #邮箱验证码发送间隔
      send_time: 60
      #邮箱验证码长度
      size: 6
  • auth_code:改为实际下发短信的服务配置

  # 腾讯云下发短信信息
    auth_code:
      # 腾讯云短信服务配置,一般是sms.tencentcloudapi.com
      domain: xxx
      # 腾讯云短信服务代理地址,如果是内网无法连接互联网,可以设置代理地址
      proxy: ""
      # 腾讯云短信服务密钥id
      secret_id: xxx
      # 腾讯云短信服务密钥
      secret_key: xxx
      # 短信验证码有效期
      expiration_time: 300
      # 短信验证码发送间隔
      send_time: 60
      # 短信验证码长度
      size: 6
      # 短信模板(腾讯云短信服务申请的模版)
      template:
        # 通用模板您正在操作xxx,验证码为: {1},请于5分钟内填写,如非本人操作,请忽略本短信。
        default: xxx
        # 邀请码短信:
        #您的同事(手机号:{1})已在「xxx平台」创建了企业账号,并将您设置为{2},请登录账号,选择「认领新的管理员身份」。 登录手机号:{3} 登录密码 :{4}
        invitation: xxx
      # 腾讯云短信服务appid
      app_id: xxx
      # 短信发送者(可配置成如xxx平台)
      sign_name: xxx
  • RedisConf:改为实际缓存数据库的服务配置

  RedisConf:
    # redis模式,如node、cluster
    Type: node
    # redis地址
    Host: 192.168.3.170:16379
    # redis密码
    Pass: passw0rd
  • did:改为实际DID gateway服务地址配置

  • auth_service:电子营业执照调用参数配置

  auth_service:
      # 是否开启mock.
      # false: 真实调用
      # true: mock调用
      mock: true
      # 电子营业执照服务地址
      url: xxx
      # 如果是内网无法连接互联网,可以设置代理地址
      proxy: ""
      # 电子营业执照服务sys code
      sys_code: xxx
      # 电子营业执照服务auth code
      auth_code: xxx
      # 暂时不需要,任意配置即可
      sign: xxx
      # 版本,目前配置为1
      version: 1

8.1.2.3. 部署到Kubernetes集群

  • 使用kubectl apply命令部署资源定义文件到Kubernetes集群:

  kubectl apply -f did-app-backend-deployment.yaml

8.1.2.4. 验证部署检查Pod状态,确保DID APP后台微服务已成功启动并运行

  • 利用kubectl get 命令查看服务是否启动

  kubectl get pod -n did| grep did-app

返回结果如下,1/1则表示微服务有一个实例,启动成功1个pod实例,如果是2/2则表示有两个实例,启动成功了2个pod实例:

  did-app-XXXXX-XXX      1/1     Running   0               1d

检查Service和Ingress资源配置,保外部访问路径和端口正确:

kubectl get svc,ing -n did| grep did-app
  • 利用health接口验证是否部署成功(ip为k8s work的地址,host为端口号)

curl -X GET https://ip:host/api/v1/did-app/health

返回结果如下,表示部署成功:

{"code":200000,"msg":"操作成功","data":{"version":"v1.0.0","app_chinese_name":"航运贸易app","didIssuer":"did:cndid:cndid","personAuthEnable":false,"downloadLink":"https://zxchain-wallet-1258344699.cos.ap11.apk"}}

8.2. APP

8.2.1. 简介

航运贸易APP是一款使用flutter构建的移动端APP,在运行源码前需要安装并下载flutter相关SDK。

flutter 开发文档:https://docs.flutter.dev/

8.2.2. 准备工作

  • 按照官方文档提示安装flutter并完成相关设置。

  • 由于本app目前仅支持Android,所以可以忽略IOS相关配置。

  • 推荐使用VSCode编辑器,需安装flutter和dart相关插件。

8.2.3. SDK版本要求:

SDK 版本号
Flutter SDK >= 3.22.2
Dart SDK >=3.3.0 <4.0.0
Android SDK >= 34.0.0

以上版本供参考,可根据官方文档提示适当升级。

8.2.4. 源码下载和运行

  • 源码地址:https://git.chainweaver.org.cn/chainweaver/did/did-app-front 。

  • 源码下载完成后可用VSCode打开。

  • 运行以下命令安装依赖:

 flutter pub get
  • 点击VSCode左侧【运行和调试】按钮启动项目。

8.2.5. 修改配置文件

  • 配置文件地址:lib/utils/const/const.dart;

  • 配置解释:

 static String env = 'dev'; //修改此处env变量,改变app运行环境
  static dynamic byEnv({dynamic dev, dynamic preview, dynamic production}) {
    return env == 'dev' ? dev : (env == 'preview' ? preview : production);
  }

  //设置服务地址
  //app的后端服务
  static String didAppBaseUrl = byEnv(
      dev: "http://dev.com", //开发环境
      preview: 'https://preview.cn', //预览环境
      production:
          'https://production.cn' //生产环境
      );
  //存证后端服务
  static String didAuthAppBaseUrl = byEnv(
      //存证2的公共存证的测试环境的访问方式
      dev: "http://192.168.1.135:8280",
      preview: 'https://tdh-api-pre.cnbn.org.cn',
      production: 'https://tdh-api.cnbn.org.cn:19981');

8.2.6. 准备证书

  • 准备有效的Android证书

  • 使用debug启动模式(即直接使用VSCode进行编译)可以不用证书,注释下方代码中debug配置即可,配置文件地址:android/app/build.gradle

    signingConfigs{
        release { //配置证书
            storeFile file("cdid.android.keystore")
            storePassword "chainmaker"
            keyPassword "chainmaker"
            keyAlias "cdid"
        }

    buildTypes {
        release {
            signingConfig signingConfigs.release
            minifyEnabled true
            proguardFiles '../proguard-rules.pro'
            shrinkResources true
        }
        //没有证书,运行debug模式删除此配置即可
        debug {
            signingConfig signingConfigs.release
        }
    }

8.2.7. 编译和安装

  • 编译:在根目录下执行以下命令:

flutter build apk --obfuscate --split-debug-info=./split_debug_info.
  • 编译完成后,在/build/app/outputs/flutter-apk目录下会生成名为app-release.apk的文件。

  • 安装:安装此apk。

8.2.8. 调试模式

  • 启动调试模式:app安装完成后打开,在开屏页多次点击【欢迎使用】文字,进入项目后,浮动展示bug图标,表示进入了调试模式。

  • 点击bug图标可以查看当前的请求及错误日志等信息。