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

加速Rails应用Docker构建中的yarn install步骤

解决Rails Docker构建中yarn install耗时过长的问题

一、必须启用Docker构建缓存优化node_modules安装

这是最直接有效的提速手段,利用Docker分层缓存特性,仅当依赖配置变更时才重新执行yarn install。调整Dockerfile步骤顺序如下:

# 先复制依赖配置文件(仅当package.json/yarn.lock修改时,此层缓存才会失效)
COPY package.json yarn.lock ./
# 锁定依赖版本避免重复解析,空devDependencies场景下用--production减少安装内容
RUN yarn install --production --frozen-lockfile
# 再复制项目其余代码
COPY . .
# 执行资产预编译
RUN rake assets:precompile

二、精简依赖,移除不必要的包

你明确不使用webpacker,当前依赖中的@rails/webpacker和rails-erb-loader属于冗余项,可通过调整资产处理方式完全移除:

  1. 修改package.json:删除@rails/webpacker和rails-erb-loader,若改用Rails原生资产管道,甚至可以完全移除@rails/actiontext和trix的npm依赖。
  2. 用Rails Asset Pipeline处理actiontext和trix:
    • 在app/assets/javascripts/application.js中添加:
      //= require trix
      //= require actiontext
      
    • 在app/assets/stylesheets/application.css中添加:
      *= require trix
      *= require actiontext
      
    • 动态ERB资产直接使用Rails原生.erb.js文件即可,无需额外loader,Rails会自动解析ERB模板。

此方案可彻底避免npm安装200MB依赖包,从根源解决yarn install耗时问题。

三、其他辅助提速技巧

若暂时无法移除npm依赖,可尝试以下方法进一步缩短耗时:

  • 挂载yarn全局缓存:避免每次构建重复下载包:
    RUN --mount=type=cache,target=/usr/local/share/.cache/yarn/v6 \
        yarn install --production --frozen-lockfile
    
  • 更换npm镜像源:使用国内镜像加快包下载速度:
    RUN yarn config set registry https://registry.npmmirror.com
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 08:40:22