AppSpec 用于定义 Application 的所有依赖包,资源配置,定制化的Script Executor,…
他的原始数据格式基于 TOML,如下为一个基于 Gitea 源码管理应用的 AppSpec 定义:
kind = "AppSpec"
roles = [101, 100]
type_tags = ["devops", "enterprise"]
[meta]
id = "gitea-x1"
name = "Gitea 源码自托管系统"
version = "1.0"
[[depends]]
id = "sysinner-mysql-x1"
name = "MySQL x1"
version = "1.0"
[[packages]]
name = "gitea"
version = "1.12"
[[executors]]
name = "gitea-main"
exec_start = """
DAEMON=/opt/gitea/gitea/gitea
DAEMON_ARGS="web"
NAME=gitea
if pidof $NAME; then
exit 0
fi
if [ ! -d "/opt/gitea/gitea" ]; then
mkdir -p /opt/gitea/gitea
fi
rsync -av {{.inpack_prefix_gitea}}/* /opt/gitea/gitea/
/home/action/.sysinner/inagent config-render --app-spec gitea-x1 --in /opt/gitea/gitea/misc/app.ini --out /opt/gitea/gitea/custom/conf/app.ini
/home/action/.sysinner/inagent config-merge --app-spec gitea-x1 --config /opt/gitea/gitea/custom/conf/app.ini --with-config-field cfg/gitea/app_ini
cd /opt/gitea/gitea/
$DAEMON $DAEMON_ARGS >> /home/action/var/log/gitea.log 2>&1 &
"""
exec_stop = "killall gitea"
[executors.plan]
on_tick = 60
[[service_ports]]
name = "http"
box_port = 3000
[[service_ports]]
name = "gitssh"
box_port = 3022
[configurator]
name = "cfg/gitea"
[[configurator.fields]]
name = "app_name"
title = "应用名称"
type = 1
default = "Gitea"
[[configurator.fields]]
name = "app_ini"
title = "ini 增量配置"
type = 304
default = "[i18n]\nLANGS = en-US,zh-CN\nNAMES = English,中文"
[exp_res]
cpu_min = 2
mem_min = 128
vol_min = 5
[exp_deploy]
rep_min = 1
rep_max = 1
sys_state = 1
network_mode = 1
但通常,开发者使用 inPanel 可视化的开发 AppSpec, 入口 inPanel/App/Spec, 如下