Bamboo CI执行docker build时Dockerfile RUN指令无输出仅显sha256求助
可行解决步骤
先确认参数生效逻辑,避免配置不生效
Bamboo任务执行时的环境变量优先级高于脚本内临时设置,首先在Bamboo对应任务的「环境变量」配置栏新增DOCKER_BUILDKIT=0,不要只写在sh脚本开头。执行docker build的命令要完整写成:DOCKER_BUILDKIT=0 docker build --progress=plain --no-cache .必须加
--no-cache参数,否则命中缓存的构建层不会重新执行指令,自然不会产生输出。强制把RUN指令输出导流到标准错误流
部分CI环境默认会过滤Docker构建过程的标准输出流,你可以修改Dockerfile里的调试指令,把输出强制打到stderr:RUN ls -ll >/dev/stderr RUN cat 你要排查的文件路径 >/dev/stderr RUN pwd >/dev/stderrBamboo默认不会拦截stderr的日志内容,调整后就能直接在控制台看到对应输出。
不改Dockerfile的临时排查方案
如果你不想修改Dockerfile,可以在构建完成后加一步临时容器执行命令,直接获取文件内容:# 构建时给镜像打个临时标签 docker build -t temp-debug-img . # 启动临时容器执行你要的排查命令,执行完自动删除容器 docker run --rm temp-debug-img sh -c "ls -ll && cat 目标文件路径"排查完成后删除临时镜像即可。
高版本Docker强制禁用BuildKit配置
如果你使用的是Docker 20.10及以上版本,部分操作系统的Docker默认强制启用BuildKit,就算设置环境变量也不生效,需要修改Docker daemon配置:
编辑/etc/docker/daemon.json,添加如下配置:{ "features": { "buildkit": false } }执行
systemctl restart docker重启Docker服务后再执行构建即可。
内容的提问来源于stack exchange,提问作者Meet
相关产品推荐
相关产品推荐

