近期做了蓝卓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] |
数据源配置——requirement.yaml
非必填
菜单配置
- 点击【excel模板下载】下载模板
- url字段需要加上supOS前缀,就是上文提到的前端访问的【开发者名称】和【APP英文名称】
规则:/apps/{开发者名称}-{APP英文名称}/{地址/路由}
🌰:/apps/blackteachan-demo/index.html - 填写完菜单excel后,在工作台中点击【excel导入】,就可以一键生成菜单配置
容器配置——compose.yaml
按照右侧规范进行填写,示例如下
1 | # -------------------------------------------- |
生成安装包
前面全部完成之后,会自动生成并下载安装包,点击最外面卡片可以把全部配置打包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.namerequirements.volumes.localPath是服务器的物理路径,的u-storage对应上文compose.yaml文件里的
1 | # 安装包版本。必填。固定值 |
接入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
2
3
4
5
6
7
8
9spring:
sql:
init:
mode: always
schema-locations: classpath*:db/schema.sql
jpa:
hibernate:
ddl-auto: update
show-sql: true - 创建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注册表
前端打包
- 把前端文件夹和Dockerfile放在一个目录下
- 编写Dockerfile
1
2
3
4
5
6
7
8
9
10FROM eco-registry.supos.com/eco/nginx:latest
# 设置工作目录
# 拷贝nginx配置文件到镜像
COPY default.conf /etc/nginx/conf.d/
# 拷贝应用文件到镜像
COPY dist /usr/share/nginx/html
# 设置容器的默认端口
EXPOSE 8080 - 用IDEA构建镜像
- 构建完成后推送镜像
- 【仓库】和【标签】对应上文compose.yaml文件中的镜像地址最后那一坨,比如仓库是redis,标签是6.2.6,镜像就是redis:6.2.6
后端打包
- 编写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 - 把下载下来的配置文件解压,修改容器里的镜像再打包
上传APP
- 进入supOS设计模式的【APP管理】-【APP运行管理】页面
- 选择本地安装,上传刚刚的压缩包
- 安装完成之后就可以运行了
















