2017-09-13 2 views
0

私はDockerの初心者です。 私はWindows 7用のDockerツールボックスを使用しています。私はPython Webアプリケーション用の画像を構築しましたが、すべて正常に動作します。スタンフォードNLPのNLTKのドッカーのためのJAVA_HOMEの設定

しかし、このアプリでは、私もjavaとjava_home設定が必要なnltkモジュールをjavaファイルに使用します。 私のコンピュータで実行しているとき、私はmannualy java_homeを設定することができますが、dockerfileでそれを行う方法で、別のマシンで実行しているときにエラーが発生しないようにします。

My Error

p.s:

+0

簡単な質問:NLTKを行うにはドッカーが本当に必要ですか? – alvas

+0

dockerhubからイメージを引き出す方法を使用する私の会社のサーバーにアプリケーションを展開する必要があるので、私はそう思うと思います –

+0

興味深い... NLTKが自己管理をホストする場合は、この問題ではドッカーの画像が含まれています:https://github.com/nltk/nltk/issues/542 – alvas

答えて

2

以下の回答あなたが-eフラグを使用して、コンテナに設定される環境変数を渡すのオプションを持っているコンテナを実行している はここに私のエラーです。この答えは、きれいな環境変数を説明していますHow do I pass environment variables to Docker containers?

docker container run -e JAVA_HOME='/path/to/java' <your image>

は、あなたのイメージは、実際に同様のJavaが含まれていることを確認します。ドッカーハブのopenjdk:8イメージを見ることができます。

イメージを構築するためにドッカーファイルが必要なようです。ここで説明ENVコマンドを見てはJAVA_HOME VAR設定する必要があります。https://docs.docker.com/engine/reference/builder/#envをしてからdocker build /path/to/Dockerfile

であなたのイメージを構築する私はあなたがすでにそれを試みたとし、代わりの..多くの運を持っているコンテナを実行しなかっ見ますあなたのアプリケーションプロセスを実行するだけで、echo $JAVA_HOMEの行に沿ってbashスクリプトを実行するので、少なくともその部分が動作していることを確認することができます。

また、下記のように、画像内の適切なディレクトリに必要なファイル/バイナリをドッカーファイルにコピーしてください。

+0

彼は自分のPythonアプリケーションを呼び出すDockerビルドに "bootstrap"スクリプトを含めて、環境変数 –

+0

をよく設定することもできます問題は、私はコンテナを実行していないと思います。私はそれをドッカーハブにプッシュし、別のアプリを使用してドッカーイメージを元に戻し、それを会社のサーバーに展開します。したがって、ビルドする前に画像を変更するだけで、画像のjava_homeを自動的に設定できるようにしています。 –

+0

@NickBrady実際のバイナリとStanford nlpディレクトリをドッキングしていない変数でも、コードそれらのリソースのいずれにもアクセスすることはできません。 – alvas

0

私は最終的にドッカーファイル用のjavaをインストールする方法を見つけました。これは、Javaのubuntuイメージのコマンドラインを使用してインストールします。 以下はドッカーファイルです。あなたの読書をありがとう。

RUN apt-get update 
RUN apt-get install -y python-software-properties 
RUN apt-get install -y software-properties-common 
RUN add-apt-repository -y ppa:openjdk-r/ppa 

RUN apt-get update 
RUN apt-get install -y openjdk-8-jdk 

ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64/ 
RUN export JAVA_HOME 
関連する問題