option-berth指南

up:让它跑起来,并等到真的就绪

up 按依赖顺序启动清单声明的东西。--wait 只在选中的服务真的开始监听并通过健康检查后才返回。

按依赖顺序启动

服务按 depends_on 的顺序启动。带 prepare: 的服务先在同一工作目录跑前置命令,成功后才启动长时间运行的 cmd:。已经在跑的服务会被跳过;每个服务保留自己的日志文件和运行记录。

oberth up --wait
api      started   :21730   ready
worker   started   no port

--wait 证明了什么

不带 --wait,up 只证明进程起来了,没有证明服务可用。带 --wait,有端口的服务必须开始监听;声明了 health: 的服务还必须通过检查;无端口 worker 的运行记录变为活跃才算就绪。已经在跑的服务也在等待范围内。

  • 每个服务按自己的 ready_timeout: 等待(默认 30s)。--wait-timeout 是整体上限,只会收紧、不会放宽每个服务的预算。
  • prepare: 不计入就绪预算;慢安装要靠 prepare_inputs: 缓存,或调用方自己的脚本超时。
  • 不等待时,已启动服务带 ready: false,表格写“就绪未确认”。这不是失败。
  • 超时的服务是 failed,原因 ready_timeout;消息会说是服务自己的预算先到,还是调用方的上限先到。

失败的时候

services[] 的每一项是 started、skipped 或 failed;失败带可分支的 reason,以及只指向真实存在证据的 hint。部分成功仍然恰好是一个 JSON 值,退出码 1。

启动失败原因
原因发生了什么先读什么
start_failed命令根本没起来。hint:拒绝它的可执行文件、工作目录或环境。
port_occupied固定端口已经被占用。port_holder:占用者的端口、pid、命令和类型。
dependency_not_ready依赖在等待期间退出了。依赖的日志;消息带它的退出码和原因。
dependency_timeout依赖活着,但一直没就绪。依赖自己的 ready_timeout: 和日志。
ready_timeout服务自己没在预算内就绪。服务的日志和它的就绪声明。

重启但不换地址

restart 先停项目再启动。带 --only 时只重启点名的服务,其余继续运行,并保留 worktree 的 port: auto 预留,所以服务拿回原来的地址。restart 不等就绪;调用方需要证据时用 up --wait。

保留地址
oberth restart --only api

边界

编辑本页

输入关键词,搜索全部章节与小节。