今回はDocker環境に最新のNodejsを入れるのに苦戦したのでそれを備忘録として書いていきたいと思います。
発生したエラー
発生したエラーは下のようになっていて、nodeのバージョンを13にしてしまっていたので、サポートされていないと出ています。nodejsは奇数番号では最新の機能を提供しますが、サポート期間は短くなります。
https://nodejs.org/ja/about/releases/
+ curl -sLf -o /dev/null ‘https://deb.nodesource.com/node_13.x/dists/bullseye/Release
## Your distribution, identified as “bullseye”, is not currently supported, please contact NodeSource at https://github.com/nodesource/distributions/issues if you think this is incorrect or would like your distribution to be considered for support
今回は先月の2021/10月にアクティブ LTSに入ったnodejsのv16を入れることにしました。
入れ方は下のようにまずcurlでダウンロード先のファイルを持ってきてからインストールしてからapt-getコマンドでインストールします。
RUN set -x \
&& curl -sL https://deb.nodesource.com/setup_16.x | bash - \
&& apt-get update -qq \
&& apt-get install -y \
nodejs \
余談ですが、コンテナでパッケージを入れる際はaptのlistを取得する必要があるため、必ずapt-get updateが必要になります。
補足
curl -sL https://deb.nodesource.com/setup_16.x | bash -
- sオプションでじゃまな出力を消せる
- Lオプションでリダイレクト先にアクセスできる
| bash -
でcurlで得たスクリプトをbashで実行する
apt-get update -qq
- qqオプションでエラー以外は表示しない
- コンテナでパッケージを入れる際は必ず必要
apt-get install -y
- -yオプションですべての質問にyesで答える
さいごに
Ruby3.0.0とRuby2.6.5のイメージを使ってnodejsのバージョンを何も指定しない場合、10番台のバージョンがインストールされました。自動で相性のいいバージョンをインストールしてくれるらしいですが、サポート終了しているのがインストールされるのは・・って思いました。
余談ですが、Rubyの公式イメージはDebian上に作られているのが多く、パッケージマネージャはapt-getになるようですね。(DebianとUbuntsuはapt-getでCentOSはyum)
https://hub.docker.com/_/ruby
ここまで読んでいただきありがとうございました。
参考
https://linuxfan.info/install_nodejs_on_ubuntu_debian