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

Docker镜像构建时bundling阶段卡住问题排查求助

Docker构建bundle阶段卡住调试建议

优先排查高概率问题

  • 校验容器内bundler版本和宿主机是否一致:Gemfile.lock如果由高版本bundler生成,容器内低版本bundler解析依赖时极易出现死循环卡住的问题。可在bundle install执行前添加命令RUN gem install bundler -v <你宿主机的bundler版本号>,指定版本安装后再执行安装操作。
  • 排查依赖解析冲突:你已经开启了DEBUG_RESOLVER=true和--verbose参数,仔细查看verbose输出最后停留的gem名称,该gem大概率存在版本冲突,可先在Gemfile中固定该gem的兼容版本再重试。另外你提前手动安装了sassc-rails和bulma-rails两个gem,建议先注释掉这两个单独安装的命令,交由bundle统一管理依赖版本,避免手动安装的版本和Gemfile声明的版本不匹配导致解析卡住。
  • 检查构建网络连通性:宿主机能正常访问gem源不代表容器构建时可以访问,可在bundle install前临时添加测试命令RUN curl -I <你使用的gem源地址,比如https://rubygems.org>,确认容器内可以正常访问gem源。如果是网络问题,可尝试在构建命令中指定公共DNS:docker build --dns 8.8.8.8 -t <tag> -f Dockerfile.production .,或者将gem源替换为国内镜像源。
  • 补充编译依赖:很多原生gem安装时需要编译环境,你当前的Dockerfile中没有安装build-essential基础编译套件,可在apt安装依赖的阶段添加build-essential包,避免编译过程卡住无输出。

通用调试手段

  • 开启全量构建日志:执行构建时添加BUILDKIT参数输出完整实时日志,避免输出折叠遗漏关键信息:BUILDKIT_PROGRESS=plain docker build -t <tag> -f Dockerfile.production .
  • 进入中间容器调试:如果构建卡在某一步,可找到该步之前的成功镜像id,启动容器手动执行bundle install命令排查:docker run --rm -it <上一步成功的镜像id> /bin/bash,进入容器后手动执行bundle相关命令,观察具体卡住的原因。

其他已知问题修正

你当前Dockerfile中存在一个潜在的卡死点:切换到circleci普通用户后执行RUN apt-get purge cmdtest,普通用户没有apt操作权限,执行到该步骤时会卡在密码输入阶段,需要将该命令移动到USER circleci之前的root用户阶段执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 01:15:05