質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

解決済

1回答

2696閲覧

Dockerfileで最新版のnodejsがインストールできない。

tkshp

総合スコア174

docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

0クリップ

投稿2023/04/11 05:41

実現したいこと

Dockerfileで以下のように書いていますが、エラーとなってしまいます。

Dockerfile

1FROM ruby:3.1.2 2RUN apt-get update -qq \ 3 && apt-get install -y nodejs npm \ 4 && rm -rf /var/lib/apt/lists/* \ 5 && npm install --global yarn \ 6 && yarn add esbuild \ 7 && yarn add sass

発生している問題・エラーメッセージ

#5 57.43 error sass@1.61.0: The engine "node" is incompatible with this module. Expected version ">=14.0.0". Got "12.22.12" #5 57.44 error Found incompatible module.

試したこと

エラーメッセージから、nodeのバージョンが12であることが原因で、
nodeのバージョンを14以上にインストールしなければいけないようですが、
apt-get updateを行ってから、インストールしているので、最新版のnodeが入ると考えていたのですが、そうなっていないようです。
どういった書き方をすればよいでしょうか?

RUN apt-get update -qq \ && apt-get install -y nodejs npm \

「apt-get install -y nodejs バージョン指定」等で検索したところ、「n latest」のような記事が見つかり、試してみましたが、
エラーとなってしまいました。

FROM ruby:3.1.2 RUN apt-get update -qq \ && n latest \
#6 2.266 /bin/sh: 1: n: not found

補足情報(FW/ツールのバージョンなど)

Windows 10
Docker Desktop

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ruby:3.1.2と書いた場合、コンテナのディストリビューションはDebian 11 (bullseye)となっています。このディストリビューションでは、Node.jsは12が標準となっています。

nodesourceからインストールしましょう。

apt-get updateを行ってから、インストールしているので、最新版のnodeが入ると考えていたのですが、そうなっていないようです。

多くの場合、ディストリビューション標準で用意しているパッケージのメジャーバージョンは、あとからバージョンアップしても上がりません。

投稿2023/04/11 06:09

maisumakun

総合スコア145183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2023/04/11 06:10

RubyからコマンドラインでNodeを呼ばなければならないぐらいに強く連携した状況では仕方ないですが、そうでなければNodeとRubyでコンテナを分けることを考えてもいいかもしれません。
tkshp

2023/04/11 06:26

ご回答ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問