Skip to content

配置系统概览

MANYOYO 提供灵活的配置系统,用于简化命令行操作和管理复杂的运行环境。

配置方式

MANYOYO 支持两种主要的配置方式:

  1. 环境变量配置:传递 BASE_URL、TOKEN 等环境变量到容器内的 CLI 工具
  2. 配置文件:使用 JSON5 格式的配置文件管理 MANYOYO 的运行参数

JSON5 格式说明

配置文件采用 JSON5 格式,相比标准 JSON 具有以下优势:

  • 支持注释:可以使用 // 单行注释和 /* */ 多行注释
  • 尾随逗号:数组和对象的最后一项可以有逗号
  • 更灵活的键名:对象键名可以不加引号(符合标识符规则的情况下)
  • 更好的可读性:适合人工编辑和维护

示例:

json5
{
    // 这是注释
    containerName: "my-dev",  // 键名可以不加引号
    imageVersion: "1.8.0-common",  // 支持尾随逗号
}

配置文件路径规则

运行配置

  • manyoyo run -r claude → 加载 ~/.manyoyo/manyoyo.jsonruns.claude
  • manyoyo run -r <name> 仅支持 runs.<name> 名称,不支持文件路径

全局配置

  • 运行任何 manyoyo 命令时,都会自动加载 ~/.manyoyo/manyoyo.json(如果存在)

环境文件

  • manyoyo run --ef /abs/path/myenv.env → 加载绝对路径环境文件
  • --ef 仅支持绝对路径,不支持短名称和相对路径

优先级机制

MANYOYO 配置参数分为两类,具有不同的合并行为:

覆盖型参数

这些参数只取最高优先级的值:

优先级顺序:命令行参数 > runs.<name> > 全局配置 > 默认值

覆盖型参数包括:

  • containerName - 容器名称
  • hostPath - 宿主机工作目录
  • containerPath - 容器工作目录
  • imageName - 镜像名称
  • imageVersion - 镜像版本
  • containerMode - 容器嵌套模式
  • yolo - YOLO 模式选择
  • shellPrefix - 命令前缀
  • shell - 执行命令
  • serverUser - 网页服务登录用户名
  • serverPass - 网页服务登录密码

其中网页认证参数 serverUser / serverPass 还支持环境变量兜底,优先级为:

命令行参数 > runs.<name> > 全局配置 > 环境变量 > 默认值

对应环境变量:MANYOYO_SERVER_USERMANYOYO_SERVER_PASS

示例:

bash
# 全局配置中设置 imageVersion: "1.8.0-common"
# 运行配置中设置 imageVersion: "1.8.0-full"
# 最终使用 "1.8.0-full"(运行配置优先级更高)

合并型参数

这些参数会按顺序累加合并:

合并顺序:全局配置 + runs.<name> + 命令行参数

合并型参数包括:

  • env - 环境变量对象(按 key 覆盖)
  • envFile - 环境文件数组
  • volumes - 挂载卷数组
  • ports - 端口映射数组
  • imageBuildArgs - 镜像构建参数数组

示例:

bash
# 全局配置:env: {"VAR1":"value1"}
# runs.demo:env: {"VAR2":"value2"}
# 命令行:-e "VAR3=value3"
# 最终结果:VAR1/VAR2/VAR3 都会生效;同名 key 按后者覆盖前者

配置合并规则表

参数类型参数名合并行为示例
覆盖型containerName取最高优先级的值CLI -n test 覆盖 runs.<name> 或全局值
覆盖型hostPath取最高优先级的值默认为当前目录
覆盖型containerPath取最高优先级的值默认与 hostPath 相同
覆盖型imageName取最高优先级的值默认 localhost/xcanwin/manyoyo
覆盖型imageVersion取最高优先级的值1.8.0-common
覆盖型containerMode取最高优先级的值common, dind, sock
覆盖型yolo取最高优先级的值c, gm, cx, oc
覆盖型serverUser按网页认证优先级取值CLI > runs.<name> > 全局 > 环境变量 > 默认值
覆盖型serverPass按网页认证优先级取值CLI > runs.<name> > 全局 > 环境变量 > 默认值
合并型env对象按 key 合并覆盖全局 + runs.<name> + CLI(同名后者覆盖)
合并型envFile数组累加合并全局 + runs.<name> + CLI 的绝对路径文件
合并型volumes数组累加合并所有挂载卷生效
合并型ports数组累加合并所有端口映射生效(透传 --publish
合并型imageBuildArgs数组累加合并所有构建参数生效

调试配置

使用以下命令查看最终生效的配置:

bash
# 显示最终配置
manyoyo config show

# 显示将要执行的命令
manyoyo config command

这些调试命令会显示所有配置源的合并结果,帮助您理解配置的优先级和合并逻辑。

下一步

Released under the MIT License.