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

Docker容器中通过RVM安装Ruby 3.2.1失败求助

解决Docker容器中RVM安装Ruby 3.2.1编译失败的问题

问题分析

从报错日志来看,即便目标是安装Ruby 3.2.1,但原命令中--ruby参数会触发安装RVM默认的Ruby 3.0.0,且该版本编译失败。核心原因是基础镜像缺少Ruby编译必需的系统依赖,jenkins/inbound-agent:latest更新后默认不再包含编译类工具,导致编译流程中断。

修复后的Dockerfile

FROM jenkins/inbound-agent:latest

USER root
SHELL ["/bin/bash", "-c", "-l"]

# 安装Ruby编译所需的完整依赖
RUN apt-get update && apt-get install --no-install-recommends -y \
    gnupg \
    procps \
    build-essential \
    libssl-dev \
    libreadline-dev \
    zlib1g-dev \
    && rm -rf /var/lib/apt/lists/*

# 安装RVM并指定安装Ruby 3.2.1(移除--ruby参数避免默认安装多余版本)
RUN curl -sSL https://rvm.io/pkuczynski.asc | gpg --import - \
    && curl -sSL https://get.rvm.io | bash -s stable \
    && source /usr/local/rvm/scripts/rvm \
    && rvm install 3.2.1 \
    && rvm use 3.2.1 --default

关键修改说明

  • 补充编译依赖:build-essential提供gcc、make等基础编译工具,libssl-dev、libreadline-dev、zlib1g-dev是Ruby核心功能依赖的底层库,缺失会导致编译失败。
  • 移除多余参数:原命令中的--ruby会自动安装RVM默认版本(日志中为3.0.0),既浪费资源又可能引发冲突,直接指定安装3.2.1更高效。
  • 优化镜像体积:添加rm -rf /var/lib/apt/lists/*清理apt缓存,避免镜像臃肿。
  • 设置默认版本:rvm use 3.2.1 --default确保容器启动后默认使用目标Ruby版本。

额外排查方案

如果问题仍未解决,可临时修改Dockerfile保留容器以查看详细编译日志:

RUN curl -sSL https://rvm.io/pkuczynski.asc | gpg --import - \
    && curl -sSL https://get.rvm.io | bash -s stable \
    && source /usr/local/rvm/scripts/rvm \
    && rvm install 3.2.1 || sleep infinity

构建镜像后启动容器:docker run -it <镜像ID> bash,查看/usr/local/rvm/log/*/make.log中的具体错误信息,定位缺失依赖或其他问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 17:40:04