web-dev-qa-db-ja.com

JavaとNode.jsの両方でDockerコンテナを作成します

これが機能することを期待した理由がわかりません:

 # Dockerfile    
 FROM node:6
 FROM Java:8

しかし、実際には機能しません。最初のコマンドは無視され、2番目のコマンドは機能するようです。

Node.jsとJavaの両方をDockerコンテナーにインストールする簡単な方法はありますか?

最終的に私が解決しようとしている問題は、Selenium Webdriverを実行するとENOENTエラーが発生することです-

[20:38:50] W/start - Selenium Standalone server encountered an error: Error: spawn Java ENOENT

現時点では、Javaがコンテナにインストールされていないためと考えられます。

14
Alexander Mills

生成された画像ごとに単一のFROMを使用できます。 nodeをベースイメージとして使用し、Javaをインストールしてください。

8
Max Farsikov

あなたにとって最良の方法は、Java(これは公式には非推奨であり、openjdkイメージを使用することをお勧めします)を取得して、そこにノードをインストールすることです。

だから、で始まる

FROM openjdk:latest

これは、現時点で8u151である最新のopenjdkイメージを使用します。次に、nodeおよび必要なその他の依存関係をインストールします。

RUN apt-get install -y curl \
  && curl -sL https://deb.nodesource.com/setup_9.x | bash - \
  && apt-get install -y nodejs \
  && curl -L https://www.npmjs.com/install.sh | sh

後でgruntのようなものをインストールしたい場合があるので、これも便利です。

RUN npm install -g grunt grunt-cli

合計すると、次のDockerfileが取得されます。

FROM openjdk:latest

RUN apt-get install -y curl \
  && curl -sL https://deb.nodesource.com/setup_9.x | bash - \
  && apt-get install -y nodejs \
  && curl -L https://www.npmjs.com/install.sh | sh \
RUN npm install -g grunt grunt-cli

私のgitlabリポジトリからDockerfileのクローンを作成できます here

19
Alex Karshin

Dockerfile内のFROMは、構成を開始するイメージをdockerに通知するだけです。複数の画像を単純に連結することはできません。プレインストールされたJava 8およびノー​​ドJSを提供する複数のコンテナーイメージが既に利用可能です。イメージを特に推奨したくありませんが、 docker-hub 自分で検索して、ニーズに最適なコンテナを使用するためです。

1
Fabian