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

Bitbucket Pipeline运行docker-compose --exit-code-from参数报错求助

问题根因

你碰到的No such service: --exit-code-from报错和docker-compose版本无关,1.29.2版本本身完整支持--exit-code-from参数。报错核心原因是参数顺序错误:docker-compose 对up子命令的解析规则是所有命令参数必须放在服务名列表之前,你原来的命令把--exit-code-from integration-tests写在了所有待启动服务名的末尾,compose会直接把这串内容识别为要启动的服务名,自然抛出找不到对应服务的错误。
至于docker: 'compose' is not a docker command报错,是因为20.10.x版本的Docker默认没有预装Compose V2插件,不是版本不支持。

方案1:调整参数顺序(无需额外安装组件,即时生效)

直接把--exit-code-from参数挪到up关键字之后、服务列表之前即可,修改后的可执行命令如下:

docker-compose -f file1.yml -f file2.yml up --exit-code-from integration-tests zookeeper-secure kafka-secure schema-registry-secure app integration-tests

用当前环境已经通过pip安装的1.29.2版本直接执行上述命令即可正常运行,不需要做其他环境改动。

方案2:安装Compose V2使用docker compose子命令

如果需要切换到集成在Docker CLI里的Compose V2版本,在Pipeline步骤中执行以下操作安装插件即可:

# 创建Docker CLI插件目录
mkdir -p /usr/local/lib/docker/cli-plugins
# 将对应x86_64架构的Compose V2二进制文件下载到上述目录,命名为docker-compose
# 为二进制文件赋予可执行权限
chmod +x /usr/local/lib/docker/cli-plugins/docker-compose

安装完成后执行docker compose version可正常输出版本信息,使用V2命令时同样要遵守参数在前、服务名在后的规则,仅需把上述命令里的docker-compose替换为docker compose即可。

通用注意事项

所有版本的Docker Compose(包括独立二进制的V1版本、CLI插件形式的V2版本)中,up子命令的所有可选参数(比如-d后台运行、--build启动前构建镜像、--abort-on-container-exit任意容器退出就停止整个环境、--exit-code-from等)都必须写在服务名列表之前,写在服务名后的内容一律会被解析为服务名,触发找不到服务的报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 00:54:28