新闻详情

新闻详情

首页 / 资讯中心 / 详情

如何用 docker compose up --exit-code-from 把服务容器退出码传递给调用方?

发布时间:2026/9/11 23:10:16来源:尧图网络
如何用 docker compose up --exit-code-from 把服务容器退出码传递给调用方?
如何用 docker compose up --exit-code-from 把服务容器退出码传递给调用方【免费下载链接】composeDefine and run multi-container applications with Docker项目地址: https://gitcode.com/GitHub_Trending/compose/composedocker compose up在默认行为下会把执行错误统一收敛为退出码1被SIGINT/SIGTERM中断时为0调用方CI 脚本、编排系统、上层 shell 逻辑无法据此区分到底是哪个业务服务失败、以及失败的具体原因。--exit-code-from SERVICE选项解决的就是这个问题让up命令把指定服务容器的退出码原样返回给调用方命令本身的退出码就等于该容器进程实际exit时使用的码值。准备条件需要一个 Compose 文件其中至少包含一个会自行退出的目标服务。仓库中的 e2e 测试 fixture TestUpExitCodeFrom/compose.yaml 给出了一份可直接照搬的示例结构一个长驻服务safesleep infinity永不退出和一个会失败的一次性任务服务failureexit 42services: safe: image: alpine init: true command: [/bin/sh, -c, sleep infinity] # never exiting failure: image: alpine init: true command: [/bin/sh, -c, sleep 1 ; echo exiting with error ; exit 42]把示例中exit 42换成你的真实作业命令即可服务名、镜像和命令都属于需要按实际情况替换的值。执行指定服务并检查命令退出码在 Compose 文件所在目录执行$ docker compose up --exit-code-fromfailure failure说明--exit-code-from的参数是 Compose 文件中的服务名string类型指定后up会返回该服务容器的退出码。该选项隐含--abort-on-container-exit任一容器退出即停止全部容器因此不能与-d/--detach搭配见 docs/reference/compose_up.md 的选项表。末尾位置参数failure用来限定只启动该服务不传位置参数时启动整个项目。--exit-code-from会隐含--abort-on-container-exit按 cmd/compose/up.go 中的参数校验以下组合会被直接拒绝--detach-d与--abort-on-container-exit不兼容--wait与--abort-on-container-exit、--attach、--attach-dependencies不兼容--abort-on-container-failure与--abort-on-container-exit不能同时使用。结果验证命令退出后用 shell 的$?读取退出码$ docker compose up --exit-code-fromfailure failure $ echo $? 42判断标准以仓库 e2e 测试 TestUpExitCodeFrom 为准该测试执行up --exit-code-fromfailure failure后断言命令退出码为42即与failure服务中exit 42的值一致。上文的42是文档测试中的示例值你的场景中它应等于目标容器实际的退出码。另一种需要留意的情况当被监听服务是长驻容器、而中止是由其他容器退出触发的该长驻容器会被中止流程停止其观察到的退出码是信号停止产生的码值。仓库测试 TestUpExitCodeFromContainerKilled 中up --exit-code-fromtesttest为长驻服务在另一服务退出触发中止后断言命令退出码为143。实现机制便于排查如果想确认退出码从哪里来可以看 pkg/compose/up.gocaptureExitCodeFrom监听容器退出事件取所选服务第一个退出容器的ExitCode记录为会话退出码最终通过cli.StatusError把该码返回给进程退出状态stopOnFirstExit则负责在检测到退出后停止整个应用。与默认退出码的对照按 docs/reference/compose_up.md 的说明不带--exit-code-from时过程遇到错误up退出码为1被SIGINTCtrlC或SIGTERM中断容器被停止退出码为0。也就是说默认情况下调用方只能拿到0/1这类粗粒度信号使用--exit-code-from后才能把具体服务的退出码如上面的42透传给 CI 或上层编排逻辑用于精确判断哪一步失败。参考命令选项定义docs/reference/compose_up.md命令行参数与兼容性校验cmd/compose/up.go行为测试与断言pkg/e2e/compose_up_test.go示例 Compose 文件pkg/e2e/testdata/TestUpExitCodeFrom/compose.yaml【免费下载链接】composeDefine and run multi-container applications with Docker项目地址: https://gitcode.com/GitHub_Trending/compose/compose创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

eCapture SSL/TLS 抓包 CPU 占用偏高?三个关键配置把它降下来 2026/9/11 23:49:22

eCapture SSL/TLS 抓包 CPU 占用偏高?三个关键配置把它降下来

eCapture SSL/TLS 抓包 CPU 占用偏高?三个关键配置把它降下来 【免费下载链接】ecapture Capturing SSL/TLS plaintext without a CA certificate using eBPF. Supported on Linux/Android kernels for amd64/arm64. 项目地址: https://gitcode.com/GitHub_Trendi…

阅读更多 →
@medusajs/framework 演进全解析:从 Medusa 2.0 重构到 2.20 的框架内核变迁 2026/9/11 23:49:22

@medusajs/framework 演进全解析:从 Medusa 2.0 重构到 2.20 的框架内核变迁

medusajs/framework 演进全解析:从 Medusa 2.0 重构到 2.20 的框架内核变迁 【免费下载链接】medusa The worlds most flexible commerce platform for agents and developers 项目地址: https://gitcode.com/GitHub_Trending/me/medusa medusajs/framework …

阅读更多 →
GMSK调制解调误码率仿真:相位连续性、高斯滤波与匹配滤波深度解析 2026/9/11 23:49:22

GMSK调制解调误码率仿真:相位连续性、高斯滤波与匹配滤波深度解析

简介:本资源是一份面向通信工程专业学生及MATLAB初学者的GMSK调制解调误码率仿真实践材料,聚焦数字通信中高斯最小频移键控的核心原理验证与性能分析。压缩包共13个文件,含11个MATLAB源程序(如GMSK_gaussian_filter.m、AWGN_chann…

阅读更多 →
AI漫剧制作指南:5款免费工具从0到1打造爆款动态漫画 2026/9/11 23:49:22

AI漫剧制作指南:5款免费工具从0到1打造爆款动态漫画

1. 为什么AI漫剧突然火起来,以及免费工具的选型思路漫剧这个词,最近半年在短视频平台上的热度比我预想的还要猛。简单说,它就是介于"动态漫画"和"短剧"之间的一种内容形态:画面是漫画风格,但有人物…

阅读更多 →
JavaWeb宿舍管理系统:JSP+Servlet+MySQL三层架构实战 2026/9/11 23:49:22

JavaWeb宿舍管理系统:JSP+Servlet+MySQL三层架构实战

简介:本资源是一套完整的JavaWeb学生宿舍管理系统毕业设计项目,面向计算机专业本科生及Java初学者,解决高校宿舍管理中人员登记、房间分配、访客记录与报修处理等核心业务场景。压缩包含1070个文件,总大小73.72MB,涵盖…

阅读更多 →
SiP系统级封装技术解析与应用实践 2026/9/11 23:46:22

SiP系统级封装技术解析与应用实践

1. SiP类器件:系统级封装的核心概念解析System in Package(SiP)正成为电子工程领域的热门技术方向。简单来说,SiP是将多个具有不同功能的芯片(如处理器、存储器、传感器等)通过先进封装技术集成在一个封装体…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞