You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker-compose任务失败但GitHub Workflow仍显示成功的原因排查

问题原因

默认情况下,docker-compose up的退出码不等于容器的退出码——只有当它自身执行出错(比如找不到配置文件、镜像构建失败)时才会返回非零值。哪怕容器运行失败退出码是2,docker-compose up本身可能依然返回0,导致GitHub Workflow误以为这个步骤执行成功。

解决方案

修改复杂度检查步骤的docker-compose命令,加上--abort-on-container-exit和--exit-code-from complexity参数,让docker-compose直接返回指定服务容器的退出码:

- name: Complexity
  run: |
    docker-compose -f scripts/docker_lintage/docker-compose.yaml up --build --abort-on-container-exit --exit-code-from complexity

参数解释

  • --abort-on-container-exit:只要有服务容器退出,就停止所有其他容器
  • --exit-code-from complexity:让docker-compose命令的退出码和complexity服务容器的退出码保持一致

另外从日志能看到,容器里缺少bc命令导致复杂度检查逻辑报错,这也是容器退出码为2的原因之一。需要在对应的Dockerfile里添加安装命令:

RUN apt-get update && apt-get install -y bc
修复后的Workflow片段
- name: Complexity
  run: |
    docker-compose -f scripts/docker_lintage/docker-compose.yaml up --build --abort-on-container-exit --exit-code-from complexity

这样配置后,当complexity容器退出码为2时,docker-compose会返回同样的退出码,GitHub Workflow就能正确识别这个步骤失败,进而标记整个任务为失败状态。

内容的提问来源于stack exchange,提问作者Oscar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 09:42:59