概要
Rails6系とdockerで環境構築する際に詰まったので、その原因と解決方法についてを書いています。
事象
- dockerfileを使って、docker環境にRailsサーバを立てようとした。
- その際、Railsを使う際の環境要件としてYarnが必要となるが、上手くインストールできなかった。
webpackerをインストールしようとすると...
RUN bundle install && rails webpacker:install
バージョン1以上2以下のyarnが必要ですという下記エラーが発生。
Webpacker requires Yarn ">=1 <2"
apt-get installでインストール済みと想定したが、上記エラーにより上手く入っていないことが分かった。
RUN apt-get install -y yarn
原因
- yarnのバージョンが古い
エラー文の内容をヒントにして原因をググってみたところ、yarnのバージョンが古いと今回のようなエラーが発生するそう。
解決方法
- 古いバージョンのyarnを一度削除して、最新のパッケージを取得・参照するリポジトリ設定を追加。
- 再度yarnをインストールする。
# デフォルトでインストールされているcmdtestを削除
apt remove cmdtest
# 古いバージョンのyarnを削除
apt remove yarn
Dockerfile
# 最新パッケージの取得と、パッケージインストール時のリポジトリ設定を追記
RUN 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 && apt-get install -y yarn
参考
On Debian or Ubuntu Linux, you can install Yarn via our Debian package repository. You will first need to configure the repository:
- 今回は、Rails6系+Ruby3.0を使用したため、LinuxOS情報を確認しました。
- yarnをインストールするOS環境がDebianだと分かったので、Yarn公式サイトの該当ページを参考にしてみました。
# cat /etc/issue
Debian GNU/Linux 11 \n \l
最後に
Yarn公式サイトを読んでみると、ちゃんとインストール手順やエラー発生時の対処方法が記載されていました...
とりあえずapt-getでインストールしたため、今回のエラーが発生してしまったので、まずは公式ドキュメントを読む癖をつけようとしみじみ感じました。。