rails webpacker:installでWebpacker requires Yarn ">=1 <2"のエラー解決

2 min read読了の目安(約1800字

概要

Rails 6.1.1をDockerで立てたところ、rails webpacker:install時にWebpacker requires Yarn ">=1 <2"でインストールに躓いたのでメモ

原因

apt-get install -y nodejs yarn

をDockerfileで指定し、yarnが入っていると思ったら、うまく入っていなかった。

備考

また、またrails newして入るwebpacker5系ではyarnの2系はサポートされていないため、yarnはstable版を入れるようにします。

https://classic.yarnpkg.com/en/docs/install#debian-stable

issueを見たところ、こちらのPRで解決したようですが、時系列的にWebpacker5系では反映がまだのよう。
Webpackerの6系がデフォルトになるとyarnの2系(コードネーム: berry)でも使えるようになってくるかと考えます。

Webpackerバージョン一覧

成果物

FROM ruby:2.7.2-slim-buster

ENV APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1

RUN apt-get update -qq && \
    apt-get install -y curl gnupg2 && \
    curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \
    echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list && \
    apt-get update -qq && apt-get install -y nodejs yarn

ADD ./Gemfile Gemfile
ADD ./Gemfile.lock Gemfile.lock
RUN bundle --jobs 8

WORKDIR /app
COPY . /app

エラーとか

apt-key output should not be parsed 

-> ENV APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1を入れました

E: gnupg, gnupg2 and gnupg1 do not seem to be installed, but one of them is required for this operation

-> エラーの通りgnupg2を入れました

また、公式の方ではsudoを使用しているので、Dockerの場合は抜きましょう

sudo apt-key
sudo tee
$ docker-compose run --rm app rails webpacker:install
(..省略..)
Webpacker successfully installed 🎉 🍰

参考

https://qiita.com/Dragon-taro/items/9bb3768f265fc627a846
https://qiita.com/jacob_327/items/e99ca1cf8167d4c1486d#warning-apt-key-output-should-not-be-parsed-stdout-is-not-a-terminal
https://k-koh.hatenablog.com/entry/2020/04/02/143017