Skip to content

lzc-manifest.yml 规范文档

一、 概述

lzc-manifest.yml 是用于定义应用部署相关配置的文件。 本文档将详细描述其结构和各字段的含义。

二、 顶层数据结构 ManifestConfig

2.1 基本信息

字段名类型描述
packagestring应用的唯一 id, 需保持全球唯一, 建议以个人域名开头
versionstring应用的版本号
namestring应用名称
descriptionstring应用描述
usagestring应用的使用须知, 如果不为空, 则微服内每个用户第一次访问本应用时会自动渲染
licensestring应用的 License 说明
homepagestring应用的主页
authorstring作者名称, 若通过商店渠道则商店账号优先级更高
min_os_versionstring本应用要求的最低系统版本, 若不满足则应用安装时会失败, 且应用商店会拒绝安装此应用

2.2 其他配置

字段名类型描述
ext_configExtConfig实验性属性, 暂不对外公开
unsupported_platforms[]string应用不支持的平台, 有效字段为: "ios", "android", "windows", "macos", "linux", "tvos"
applicationApplicationConfiglzcapp 核心服务配置
servicesmap[string]ServiceConfig传统 docker container 相关服务配置
localesmap[string]I10nConfigItem应用本地化配置(可选配置项),需要更新 lzc-os 版本 >= v1.3.0

三、 IngressConfig 配置

3.1 网络配置

字段名类型描述
protocolstring协议类型, 支持 TCPUDP
portint目标端口号, 若为空, 则使用实际入站的端口
servicestring服务容器的名称, 若为空, 则为 app 这个特殊 service
descriptionstring服务描述, 以便系统组件渲染应用服务给管理员查阅
publish_portstring允许的入站端口号, 可以为具体的端口号或 1000~50000 这种端口范围
send_port_infobool以 little ending 发送 uint16 类型的实际入站端口给目标端口后再进行数据转发

四、 ApplicationConfig 配置

4.1 基础配置

字段名类型描述
imagestring应用镜像, 若无特殊要求, 请留空使用系统默认镜像(alpine3.21)
background_taskbool若为 true 则会自动启动并且不会被自动休眠, 默认为 true
subdomainstring本应用的入站子域名,应用打开默认使用此子域名
secondary_domains[]string本应用其他入站子域名
multi_instancebool是否以多实例形式部署
usb_accelbool挂载相关设备到所有服务容器内的 /dev/bus/usb
gpu_accelbool挂载相关设备到所有服务容器内的 /dev/dri
kvm_accelbool挂载相关设备到所有服务容器内的 /dev/kvm/dev/vhost-net
depends_on[]string依赖的其他容器服务, 仅支持本应用内的其他服务, 且强制检测类型为 healthly, 可选

4.2 功能配置

字段名类型描述
file_handlerFileHandlerConfig声明本应用支持的扩展名, 以便其他应用在打开特定文件时可以调用本应用
routes[]stringhttp 相关路由规则
public_path[]string独立鉴权的 http 路径列表
workdirstringapp 容器启动时的工作目录
ingress[]IngressConfigTCP/UDP 服务相关
environment[]stringapp 容器的环境变量
health_checkHealthCheckConfigapp 容器的健康检测, 仅建立在开发调试阶段设置 Disable 字段, 不建议进行替换, 否则系统默认注入的自动依赖检测逻辑会丢失

五、 HealthCheckConfig 配置

5.1 检测配置

字段名类型描述
test[]string仅 services 字段下生效。 例如: ["CMD", "curl", "-f", "http://localhost"] 或 `test: curl -f https://localhost
start_periodtime.Duration启动等待阶段时间, 超出此时间范围后若还未进入 healthly 状态则会变为 unhealthy
disablebool禁用本容器的健康检测
test_urlstring仅 application 字段下生效。 扩展的检测方式, 直接提供一个 http url 不依赖容器内部有 curl/wget 之类的命令行

六、 ExtConfig 配置

字段名类型描述
enable_document_accessbool如果为true则将document目录挂载到/lzcapp/run/mnt/home
enable_media_accessbool如果为true则将media目录挂载到/lzcapp/run/mnt/media
disable_url_raw_pathbool如果为true则删除http header中的raw url
disable_grpc_web_on_rootbool如果为true则不再劫持应用的grpc-web流量。需要配合新版本lzc-sdk以便系统本身的grpc-web流量可以正常转发
remove_this_request_headers[]string删除这个列表内的http request header, 比如"Origin"、"Referer"

七、 ServiceConfig 配置

7.1 容器配置

字段名类型描述
imagestring对应容器的 docker 镜像
environment[]string对应容器的环境变量
entrypoint*string对应容器的 entrypoint, 可选
command*string对应容器的 command, 可选
tmpfs[]string挂载 tmpfs volume, 可选
depends_on[]string依赖的其他容器服务(app这个名字除外), 仅支持本应用内的其他服务, 且强制检测类型为 healthly 可选
health_check*HealthCheckConfig容器的健康检测策略
user*string容器运行的 UID 或 username, 可选
cpu_sharesint64CPU 份额
cpusfloat32CPU 核心数
network_modestring网络模式, 目前只支持host或留空。 若为 host 则会容器的网络为宿主网络空间。 此模式下应用进行网络监听时务必注意鉴权, 非必要不要监听 0.0.0.0
netadminbool若为 true, 则容器具备 NET_ADMIN 权限, 可以操作网络相关系统调用, 如无必要请不要使用。 若使用此功能, 请务必小心不要扰乱 iptables 相关规则
setup_script*string配置脚本, 脚本内容会以 root 权限执行后, 再按照 OCI 的规范执行原始的 entrypoint 内容。 本字段和 entrypoint,command 字段冲突, 无法同时设置, 可选
binds[]stringlzcapp 容器的 rootfs 重启后会丢失, 仅 /lzcapp/var, /lzcapp/cache 路径下的数据会永久保留。 因此其他需要保留的目录需要 bind 到这两个目录之下。 此列表仅支持 /lzcapp 开头的路径

八、FileHandlerConfig 配置

8.1 文件处理配置

字段名类型描述
mime[]string支持的 MIME 类型列表
actionsmap[string]string动作映射

九、HandlersConfig 配置

9.1 处理程序配置

字段名类型描述
acl_handlerstringACL 处理程序
error_page_templatesmap[string]string错误页面模板, 可选

十、本地化 I10nConfigItem 应用配置

配置 locales 使应用支持多语言,支持设置的 language key 规范可参考 BCP 47 标准

字段名类型描述
namestring应用名称本地化字段
descriptionstring应用描述本地化字段
usagestring应用的使用须知本地化字段
配置示例
yml
lzc-sdk-version: 0.1
package: cloud.lazycat.app.netatalk
version: 0.0.1
name: Apple 时间机器备份
description: Netatalk 服务可用于 Apple 时间机器备份
author: Netatalk
locales:
  zh:
    name: "Apple 时间机器备份"
    description: "Netatalk 服务可用于 Apple 时间机器备份"
  zh_CN:
    name: "Apple 时间机器备份"
    description: "Netatalk 服务可用于 Apple 时间机器备份"
  en:
    name: "Time Machine Server"
    description: "Netatalk service can be used for Apple Time Machine backup"
  ja:
    name: "タイムマシンサーバー"
    description: "Netatalk サービスは Apple Time Machine のバックアップに使用できます"
application:
  subdomain: netatalk3
lzc-sdk-version: 0.1
package: cloud.lazycat.app.netatalk
version: 0.0.1
name: Apple 时间机器备份
description: Netatalk 服务可用于 Apple 时间机器备份
author: Netatalk
locales:
  zh:
    name: "Apple 时间机器备份"
    description: "Netatalk 服务可用于 Apple 时间机器备份"
  zh_CN:
    name: "Apple 时间机器备份"
    description: "Netatalk 服务可用于 Apple 时间机器备份"
  en:
    name: "Time Machine Server"
    description: "Netatalk service can be used for Apple Time Machine backup"
  ja:
    name: "タイムマシンサーバー"
    description: "Netatalk サービスは Apple Time Machine のバックアップに使用できます"
application:
  subdomain: netatalk3