近期做了蓝卓supOS平台的融合工作,简单记录一下
准备工作
创建APP
- 打开蓝卓云开发商工作台并登录
- 进入【APP集成】 - 【Hosted-APP】页面,创建APP
- 填写必填项
基础配置
点击APP卡片下方配置按钮进入配置页
APP信息——APP.yaml
填写必填信息(【开发者名称】和【APP英文名称】会组成应用在supOS访问路径中的前缀)
开发者信息——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 | [SDK] |
2 | # 线上环境调用SDK必须要有 |
3 | ADDRESS = http://192.168.0.212:8080 |
4 | [SUPOS] |
5 | IP = 192.168.0.212 |
6 | ADDRESS = http://192.168.0.212:8080 |
7 | WEBHOOK_URL = http://192.168.0.212:8080/apps/a-d/ucs/supos/webhook |
8 | SUPOS_LOGOUT_URL = http://192.168.0.212:8080/apps/a-d/ucs/supos/auth/logout/%s |
9 | [NACOS] |
10 | HOST = 127.0.0.1 |
11 | [REDIS] |
12 | HOST = 127.0.0.1 |
数据源配置——requirement.yaml
非必填
菜单配置
- 点击【excel模板下载】下载模板
- url字段需要加上supOS前缀,就是上文提到的前端访问的【开发者名称】和【APP英文名称】
规则:/apps/{开发者名称}-{APP英文名称}/{地址/路由}
🌰:/apps/blackteachan-demo/index.html
- 填写完菜单excel后,在工作台中点击【excel导入】,就可以一键生成菜单配置
容器配置——compose.yaml
按照右侧规范进行填写,示例如下
1 | # -------------------------------------------- |
2 | # add by blackteachan 24-01-16 |
3 | # -------------------------------------------- |
4 | apiVersion: v3alpha1 |
5 | service: |
6 | replicas: 1 |
7 | proxy: |
8 | paths: |
9 | - path: / |
10 | servicePort: 8080 |
11 | ports: |
12 | - port: 8080 |
13 | targetPort: 8080 |
14 | protocol: TCP |
15 | name: xxx |
16 | containers: |
17 | # --------- redis --------- |
18 | - name: redis |
19 | image: eco-registry.supos.com/dev/supoXxx/redis:6.2.6 |
20 | volumeMounts: |
21 | - name: redis-data |
22 | mountPath: /data |
23 | ports: |
24 | - containerPort: 6379 |
25 | # --------- nacos --------- |
26 | - name: nacos |
27 | image: eco-registry.supos.com/dev/supoXxx/nacos/nacos-server:2.0.3 |
28 | ports: |
29 | - containerPort: 8848 |
30 | # --------- nginx --------- |
31 | - name: nginx |
32 | image: eco-registry.supos.com/dev/supoXxx/nginx:x.x.x |
33 | ports: |
34 | - containerPort: 8080 |
35 | # --------- jar --------- |
36 | - name: java-app |
37 | image: eco-registry.supos.com/dev/supoXxx/xxx:x.x.x |
38 | ports: |
39 | - containerPort: 9090 |
40 | resources: |
41 | requests: |
42 | cpu: 1000m |
43 | memory: 1024Mi |
44 | limits: |
45 | cpu: 8000m |
46 | memory: 8192Mi |
47 | volumeMounts: |
48 | - name: u-storage |
49 | mountPath: /home/u-storage |
50 | logDirectory: /logs |
生成安装包
前面全部完成之后,会自动生成并下载安装包,点击最外面卡片可以把全部配置打包zip下载(留着后面上传用)
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 | apiVersion: v3alpha4 |
3 | # 资源申请列表 |
4 | requirements: |
5 | # 申请天湖数据库资源。非必填。 |
6 | databases: |
7 | - name: db-xxx-a |
8 | resourceType: mariadb |
9 | apply: reject |
10 | - name: db-xxx-b |
11 | # 资源类型。必填。当前支持:mariadb,tsdb,postgres |
12 | resourceType: mariadb |
13 | # 使用平台库。必填。值为:allow和reject。默认值为reject。 |
14 | apply: reject |
15 | # 申请持久卷资源。非必填。 |
16 | volumes: |
17 | # 持久卷名称。必填项。注意:此名称将会在compose.yaml文件中使用。 |
18 | - name: redis-data |
19 | # 持久卷类型。必填项。取值:pvc=网络盘,local=本地盘(即当前机器的硬盘)。 |
20 | resourceType: pvc |
21 | # 空间大小。非必填。当resourceType=pvc时必填。格式为:100Mi、1Gi |
22 | size: 1Gi |
23 | - name: u-storage |
24 | resourceType: local |
25 | # 服务器的路径 |
26 | localPath: /home/u-storage |
接入SDK
申请AKSK
- 访问supOS本地地址并登录
- 进入【普通视图】
- 点击右上角的设计图标
- 进入【系统管理】-【系统配置】-【系统设置】页面的【AK/SK凭证管理】功能
- 新增一个AKSK(APP ID暂时没发现有什么用途)
组织架构&用户
文档
官方文档比较乱七八糟模糊,接口调用的时候尽量按照实际来,文档地址可以在supOS里找到
SDK
- 进入官网开发者中心可以找到JAVA-SDK源码,官方迭代比较迅速,写这篇文章的时候已经从刚下载的3.2.4升级到了3.2.6
- 对bluetron-java-sdk这个模块进行打包,供后续开发使用
⭐️也可以为了开发方便,对SDK进行二次封装,并上传到二方库
示例代码
🚧以后有时间封装一下
Java示例
- application.yml配置里需要用到初始化数据库
1
spring:
2
sql:
3
init:
4
mode: always
5
schema-locations: classpath*:db/schema.sql
6
jpa:
7
hibernate:
8
ddl-auto: update
9
show-sql: true
- 创建sql文件,放在
src/main/resources/db/schema.sql
这个位置(spring.sql.init.schema-locations)
如果是用Navicat导出结构,需要把所有创建表的语句调整一下,否则每次启动都会重新删表建表1
-- Navicat导出
2
DROP TABLE IF EXISTS `xxx`;
3
CREATE TABLE `xxx` (
4
......
5
);
1
-- 修改后
2
CREATE TABLE IF NOT EXISTS `xxx` (
3
......
4
);
打包上传
准备工作
安装Docker
IDEA插件
确保IDEA安装了Docker插件,构建镜像的时候简单方便些
添加私有注册表
在IDEA的服务中加入Docker注册表
前端打包
- 把前端文件夹和Dockerfile放在一个目录下
- 编写Dockerfile
1
FROM eco-registry.supos.com/eco/nginx:latest
2
3
# 设置工作目录
4
# 拷贝nginx配置文件到镜像
5
COPY default.conf /etc/nginx/conf.d/
6
# 拷贝应用文件到镜像
7
COPY dist /usr/share/nginx/html
8
9
# 设置容器的默认端口
10
EXPOSE 8080
- 用IDEA构建镜像
- 构建完成后推送镜像
- 【仓库】和【标签】对应上文compose.yaml文件中的镜像地址最后那一坨,比如仓库是redis,标签是6.2.6,镜像就是redis:6.2.6
后端打包
- 编写Dockerfile
1
# 基础镜像地址
2
FROM eco-registry.supos.com/eco/openjdk:8-jdk-alpine
3
# 设置时区
4
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
5
RUN echo 'Asia/Shanghai' >/etc/timezone
6
7
WORKDIR /apps
8
# 添加程序jar文件
9
COPY ./target/xxx-*.jar ./xxx.jar
10
# 设置应用的jvm参数
11
ENV jvm_opts="-server -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=256m -Xms512m -Xmx1024m -Xmn512m -Xss256k -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC -Dtask=true"
12
EXPOSE 8082
13
ENTRYPOINT exec java -jar $jvm_opts xxx.jar
- 把下载下来的配置文件解压,修改容器里的镜像再打包
上传APP
- 进入supOS设计模式的【APP管理】-【APP运行管理】页面
- 选择本地安装,上传刚刚的压缩包
- 安装完成之后就可以运行了