融合supOS

近期做了蓝卓supOS平台的融合工作,简单记录一下

准备工作

创建APP

  1. 打开蓝卓云开发商工作台并登录
  2. 进入【APP集成】 - 【Hosted-APP】页面,创建APPHosted-APP
  3. 填写必填项创建Hosted-APP

基础配置

点击APP卡片下方配置按钮进入配置页配置

APP信息——APP.yaml

填写必填信息(【开发者名称】和【APP英文名称】会组成应用在supOS访问路径中的前缀)
app.yaml

开发者信息——vendor.yaml

非必填(暂时未发现用途)

APP运行配置——config.ini

非必填
SDK_ADDRESS配置必须要有,否则无法在线上环境调用supOS的SDK
config.ini和application.yml的对应关系

config.ini application.yml
[SDK]ADDRESS=xxx ${SDK_ADDRESS}
[NACOS]HOST=127.0.0.1 ${NACOS_HOST}
1
2
3
4
5
6
7
8
9
10
11
12
[SDK]
# 线上环境调用SDK必须要有
ADDRESS = http://192.168.0.212:8080
[SUPOS]
IP = 192.168.0.212
ADDRESS = http://192.168.0.212:8080
WEBHOOK_URL = http://192.168.0.212:8080/apps/a-d/ucs/supos/webhook
SUPOS_LOGOUT_URL = http://192.168.0.212:8080/apps/a-d/ucs/supos/auth/logout/%s
[NACOS]
HOST = 127.0.0.1
[REDIS]
HOST = 127.0.0.1

数据源配置——requirement.yaml

非必填

菜单配置

  1. 点击【excel模板下载】下载模板
  2. url字段需要加上supOS前缀,就是上文提到的前端访问的【开发者名称】和【APP英文名称】
    规则:/apps/{开发者名称}-{APP英文名称}/{地址/路由}
    🌰:/apps/blackteachan-demo/index.htmlmenu.xlsx
  3. 填写完菜单excel后,在工作台中点击【excel导入】,就可以一键生成菜单配置

容器配置——compose.yaml

按照右侧规范进行填写,示例如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# -------------------------------------------- 
# add by blackteachan 24-01-16
# --------------------------------------------
apiVersion: v3alpha1
service:
replicas: 1
proxy:
paths:
- path: /
servicePort: 8080
ports:
- port: 8080
targetPort: 8080
protocol: TCP
name: xxx
containers:
# --------- redis ---------
- name: redis
image: eco-registry.supos.com/dev/supoXxx/redis:6.2.6
volumeMounts:
- name: redis-data
mountPath: /data
ports:
- containerPort: 6379
# --------- nacos ---------
- name: nacos
image: eco-registry.supos.com/dev/supoXxx/nacos/nacos-server:2.0.3
ports:
- containerPort: 8848
# --------- nginx ---------
- name: nginx
image: eco-registry.supos.com/dev/supoXxx/nginx:x.x.x
ports:
- containerPort: 8080
# --------- jar ---------
- name: java-app
image: eco-registry.supos.com/dev/supoXxx/xxx:x.x.x
ports:
- containerPort: 9090
resources:
requests:
cpu: 1000m
memory: 1024Mi
limits:
cpu: 8000m
memory: 8192Mi
volumeMounts:
- name: u-storage
mountPath: /home/u-storage
logDirectory: /logs

生成安装包

前面全部完成之后,会自动生成并下载安装包,点击最外面卡片可以把全部配置打包zip下载(留着后面上传用)
img.png

requirement.yaml

控制台上没有对requirement.yaml文件进行配置,在这里简单贴一下🌰
requirements.databases.name字段在application.yml文件中用${SUPOS_DB-XXX-A_DBNAM:xxx}进行注入
requirements.volumes.name的u-storage对应上文compose.yaml文件里的service.containers.volumeMounts.name
requirements.volumes.localPath是服务器的物理路径,的u-storage对应上文compose.yaml文件里的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 安装包版本。必填。固定值
apiVersion: v3alpha4
# 资源申请列表
requirements:
# 申请天湖数据库资源。非必填。
databases:
- name: db-xxx-a
resourceType: mariadb
apply: reject
- name: db-xxx-b
# 资源类型。必填。当前支持:mariadb,tsdb,postgres
resourceType: mariadb
# 使用平台库。必填。值为:allow和reject。默认值为reject。
apply: reject
# 申请持久卷资源。非必填。
volumes:
# 持久卷名称。必填项。注意:此名称将会在compose.yaml文件中使用。
- name: redis-data
# 持久卷类型。必填项。取值:pvc=网络盘,local=本地盘(即当前机器的硬盘)。
resourceType: pvc
# 空间大小。非必填。当resourceType=pvc时必填。格式为:100Mi、1Gi
size: 1Gi
- name: u-storage
resourceType: local
# 服务器的路径
localPath: /home/u-storage

接入SDK

申请AKSK

  1. 访问supOS本地地址并登录
  2. 进入【普通视图】普通视图
  3. 点击右上角的设计图标设计图标
  4. 进入【系统管理】-【系统配置】-【系统设置】页面的【AK/SK凭证管理】功能AKSK凭证管理
  5. 新增一个AKSK(APP ID暂时没发现有什么用途)

组织架构&用户

文档

官方文档比较乱七八糟模糊,接口调用的时候尽量按照实际来,文档地址可以在supOS里找到接口文档.png

SDK

  1. 进入官网开发者中心可以找到JAVA-SDK源码,官方迭代比较迅速,写这篇文章的时候已经从刚下载的3.2.4升级到了3.2.6
  2. 对bluetron-java-sdk这个模块进行打包,供后续开发使用
    ⭐️也可以为了开发方便,对SDK进行二次封装,并上传到二方库SDK项目工程

示例代码

🚧以后有时间封装一下

Java示例

  1. application.yml配置里需要用到初始化数据库
    1
    2
    3
    4
    5
    6
    7
    8
    9
    spring:
    sql:
    init:
    mode: always
    schema-locations: classpath*:db/schema.sql
    jpa:
    hibernate:
    ddl-auto: update
    show-sql: true
  2. 创建sql文件,放在src/main/resources/db/schema.sql这个位置(spring.sql.init.schema-locations)
    如果是用Navicat导出结构,需要把所有创建表的语句调整一下,否则每次启动都会重新删表建表
    1
    2
    3
    4
    5
    -- Navicat导出
    DROP TABLE IF EXISTS `xxx`;
    CREATE TABLE `xxx` (
    ......
    );
    1
    2
    3
    4
    -- 修改后
    CREATE TABLE IF NOT EXISTS `xxx` (
    ......
    );

打包上传

准备工作

安装Docker

一键安装脚本

IDEA插件

确保IDEA安装了Docker插件,构建镜像的时候简单方便些

添加私有注册表

在IDEA的服务中加入Docker注册表Docker注册表

前端打包

  1. 把前端文件夹和Dockerfile放在一个目录下前端目录
  2. 编写Dockerfile
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    FROM eco-registry.supos.com/eco/nginx:latest

    # 设置工作目录
    # 拷贝nginx配置文件到镜像
    COPY default.conf /etc/nginx/conf.d/
    # 拷贝应用文件到镜像
    COPY dist /usr/share/nginx/html

    # 设置容器的默认端口
    EXPOSE 8080
  3. 用IDEA构建镜像构建镜像
  4. 构建完成后推送镜像推送镜像
  5. 【仓库】和【标签】对应上文compose.yaml文件中的镜像地址最后那一坨,比如仓库是redis,标签是6.2.6,镜像就是redis:6.2.6

后端打包

  1. 编写Dockerfile
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    # 基础镜像地址
    FROM eco-registry.supos.com/eco/openjdk:8-jdk-alpine
    # 设置时区
    RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
    RUN echo 'Asia/Shanghai' >/etc/timezone

    WORKDIR /apps
    # 添加程序jar文件
    COPY ./target/xxx-*.jar ./xxx.jar
    # 设置应用的jvm参数
    ENV jvm_opts="-server -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=256m -Xms512m -Xmx1024m -Xmn512m -Xss256k -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC -Dtask=true"
    EXPOSE 8082
    ENTRYPOINT exec java -jar $jvm_opts xxx.jar
  2. 把下载下来的配置文件解压,修改容器里的镜像再打包后端目录

上传APP

  1. 进入supOS设计模式的【APP管理】-【APP运行管理】页面
  2. 选择本地安装,上传刚刚的压缩包本地安装
  3. 安装完成之后就可以运行了
如果文章对您有帮助,欢迎评论或打赏,感谢支持!