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图标可以查看当前的请求及错误日志等信息。