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

Docker未按Dockerfile指定用Ruby2.7.7,仍用2.7.5的问题排查

Ruby版本不匹配问题排查与解决

不需要在Docker命令中指定Ruby版本,容器内的Ruby版本完全由Dockerfile控制,以下是具体排查和解决步骤:

  • 检查Dockerfile基础镜像
    确认Dockerfile开头的基础镜像明确指定了2.7.7版本,比如FROM ruby:2.7.7(或对应的变体如ruby:2.7.7-slim)。如果之前写的是ruby:2.7这类模糊版本,可能拉取到了2.7.5的镜像。
    执行docker images查看本地Ruby镜像版本,若存在旧的2.7.5镜像,删除后重新构建:

    docker rmi ruby:2.7.5
    docker compose build --no-cache
    
  • 清理容器缓存与卷
    容器内的Bundler缓存可能残留旧版本依赖,彻底清理容器和关联卷后重新启动:

    docker compose down -v
    docker compose up
    

    也可以在Dockerfile中添加RUN bundle clean --force,确保构建时清理旧缓存。

  • 排查本地版本管理器的干扰
    虽然Docker环境隔离,但如果docker-compose.yml中挂载了本地的版本管理器目录(如~/.asdf、~/.rbenv)到容器内,会覆盖容器的Ruby配置。检查volumes配置,移除这类不必要的挂载。同时确认本地的.ruby-version文件没有被挂载到容器中。

  • 重新生成Gemfile.lock
    如果本地用旧Ruby版本(2.7.5)生成过Gemfile.lock,该文件会被带入容器导致版本冲突。删除本地的Gemfile.lock,然后在容器内重新安装依赖生成新的锁文件:

    rm Gemfile.lock
    docker compose run --rm app bundle install
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 11:35:22