Docker Compose 5.6 的 jobs 只能靠 docker compose run 启动
来源:dev.to — 2026-10-16
📋 概述
Compose 5.6.0 在 10 月 2 日发布,新增了与服务并列的顶层 jobs 段落,发布说明只有一句「部分支持:目前仅支持手动触发的作业」。作者想搞清楚声明一个 job 到底会发生什么,第一个发现是文件直接被拒:jobs 条目必须自带 triggers 块,否则连解析都过不了;补上 manual: true 之后才通过校验。接着是行为差异:docker compose up -d 会起 db、跳过 job,只丢一句警告说用 run 触发,退出码还是 0,ps -a 里根本看不到这个 job;create 和 start 则直接拒绝并返回 1。也就是说,五个能让服务出现的命令里,只有 run 碰得到 job。对习惯了声明式的人来说,这是把文档里的未来直接写进了现在的配置。
🔑 核心要点
- 语法门槛先卡一刀:jobs 条目没有 triggers 块连校验都过不去,它不是换了标签的服务。
- up 的行为是静默跳过:只发一条警告,退出码 0,ps -a 里查不到,也不进任何报告。
- create 与 start 是硬拒绝:同一句提示加退出码 1,五个命令里只有 run 有效。
- 作者的观察偏保守:把文档里的未来写进配置,会先把现在弄坏。
💡 金句
“A jobs: entry is not just a service with a different label.”
译:一个 jobs: 条目不是换了个标签的服务。
👍 0
👎 0
← 返回 dev.to 首页