はじめに
以前に以下の記事を書いていた。
この記事の中でNodeのインストール方法として、以下を記載していた。
RUN curl -fsSLk https://deb.nodesource.com/setup_22.x | bash - && apt-get install -y nodejs
しかし2026年2月現在、上記の方法ではインストールができなくなってしまったようなので、回避策を以下にまとめる。
https ://deb.nodesource.com/setup_22.x の判定
if [ "$arch" != "amd64" ] && [ "$arch" != "arm64" ]; then
handle_error "1" "Unsupported architecture: $arch. Only amd64, arm64 are supported. Contact Nodesource for an extended support version https://nodesource.com/pages/contact-us.html."
fi
確かにsetup_22.xのスクリプトの中に32bit系の判定がない、、、。(有償でなら利用可能とか???)
Node v22系と32bit(ARMv7系)の関係を確認
もう32bit系OSではNode v22系が使えなくなったのか???と思ってnodejs.orgを覗く。
上部で「v22.22.0(LTS)」を選択しても、下部で「ARMv7」アーキテクチャが選択できるようだ。v24系を選択すると「ARMv7」が選択できないようになるので、急に非サポートになったという訳ではなさそう。(v24系以降では完全に非サポートとなるかのように思われるが)
ということは今回はNodeSourceで32bit系/ARMv7系が非サポートになっただけのように思われる。(前述のsetup_22.xのエラーメッセージだけで判断するに)
そこで今回はnodejs.orgの以下のダウンロードURLを利用してインストール方法を記載していく。
https://nodejs.org/dist/v22.22.0/node-v22.22.0-linux-armv7l.tar.xz
Dockerfile
Nodeのインストール方法変更に伴う修正
RUN curl -fsSLk https://deb.nodesource.com/setup_22.x | bash - && apt-get install -y nodejs
↓
RUN curl -fsSL https://nodejs.org/dist/v22.22.0/node-v22.22.0-linux-armv7l.tar.xz | tar -xJ -C /usr/local --strip-components=1
ちなみにインストール先は/usr/local/binになり、そこにnodeやnpmが格納される。
またコンテナ上でのPATH環境変数には以下のように/usr/local/binが含まれている。
# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
NODE_PATHに伴う修正
Nodeモジュールが格納されるパスも変わったのか、これまでのパスのままではインストールしたことを認識してくれなかった。どうやら/usr/local/lib/node_modulesになっている模様。そこで以下の変更も。
ENV NODE_PATH=/usr/lib/node_modules
↓
ENV NODE_PATH=/usr/local/lib/node_modules
packages.txt
以下を追加。
ca-certificates
xz-utils
python3
詳細は前の記事にて。
終わりに
無事インストールが完了し、実行できた。
armadillo:~# podman exec -it sample_xxx bash
root@armadillo:/vol_app/src# whereis node
node: /usr/local/bin/node /usr/include/node
root@armadillo:/vol_app/src# node -v
v22.22.0

