# 应用制作说明 ### 基础目录 `/app` ### 应用格式 ``` ├── app_name // 应用名称 ├── logo.png // 应用 logo , 推荐 180 * 180 px ├── data.yml // 应用声明文件 ├── README.md // 应用说明文档 ├── 2.2.0 // 应用版本 │   ├── data.yml // 表单配置 | ├── scripts // 脚本目录 │   └── docker-compose.yml // docker-compose 文件 └── 2.3.2 // 应用版本 ├── data.yml ├── data └── docker-compose.yml ``` #### 应用声明文件 ```yaml # 固定参数 additionalProperties: # 应用的 key , 仅限英文 key: app_name # 应用名称 显示名称 name: app_show_name # 应用标签 tags: # 参考 tags.yml - WebSite # 应用中文描述, 推荐 30 字以内 shortDescZh: 应用主要概述 # 应用英文描述 shortDescEn: Application main description # 应用类型 type: website # 跨大版本升级 crossVersionUpdate: true # 安装限制, 0 代表无限制 limit: 0 # 官网地址 website: https://app.com # 仓库地址 github: https://github.com/app/app # 文档地址 document: https://docs.app.com ``` ##### 应用类型 | type | 说明 | |---------|--------------------------------------------------------| | website | website 类型在 1Panel 中支持在网站中一键部署,wordpress halo 都是此 type | | runtime | mysql openresty redis 等类型的应用 | | tool | phpMyAdmin redis-commander jenkins 等类型的应用 | #### 脚本目录 + `scripts` 安装脚本文件 + `init.sh` 安装前执行 + `upgrade.sh` 升级前执行 + `uninstall.sh` 卸载后执行 #### 表单配置 ```yaml # 固定参数 additionalProperties: formFields: # 默认值 - default: "" # 安装后可修改 edit: true # 是否禁用 disabled: false # 环境变量 key envKey: PANEL_DB_HOST # 依赖应用 key key: mysql # 英文标签 labelEn: Database Service # 中文标签 labelZh: 数据库服务 # 是否必填 required: true # 依赖服务 type: service # 是否在默认值基础上增加随机字符 random: true # 校验规则 rule: paramCommon # 下拉选择 - default: "" envKey: LOG_LEVEL labelEn: Log level labelZh: 日志级别 required: true type: select values: - label: DEBUG value: "DEBUG" - label: INFO value: "INFO" - label: WARNING value: "WARNING" - label: ERROR value: "ERROR" - label: CRITICAL value: "CRITICAL" # 端口效验 - default: 3306 envKey: PANEL_APP_PORT_DB labelEn: Database port labelZh: 数据库端口 rule: paramPort type: number ``` ##### 字段说明 + `type` 字段类型 + `service` 依赖服务 + `password` 密码 + `text` 文本 + `number` 数字 + `select` 下拉框 + `rule` 校验规则 + `paramPort` 用于限制端口范围为 1-65535 + `paramCommon` 英文、数字、.-和_,长度2-30 + `paramComplexity` 支持英文、数字、.%@$!&~_-,长度6-30,特殊字符不能在首尾 + `paramExtUrl` 格式为 http(s)://(域名/ip):(端口) + `key` 特殊值 + `PANEL_APP_PORT_HTTP` Web应用端口 + `PANEL_APP_PORT_HTTPS` Web应用端口 SSL + `PANEL_APP_PORT` 前缀将认定为端口,并且用于安装前的端口占用校验 #### docker-compose.yml 文件 通过使用 `${envKey}` 获取`表单配置`中的值