2017-02-15 7 views
1

ドッカーファイルを作成しようとしています。私は以前、自分のプロジェクトにハードコードされたパスを使用しようとしましたが、出力は問題ありませんでした。しかし、変数を使用するとすぐに、Javaコードの実行が停止しました。Docker Entrypointコマンドで変数を使用できません

Dockerfile

FROM java:7 
EXPOSE 7100 

ARG version 
ENV version=$version 
RUN echo $version 

RUN mkdir -p /cacheDir/services/live/prediction/p7100/$version/logs 
RUN ls -tlr /cacheDir/services/live/prediction/p7100/ 

RUN mkdir -p /cacheDir/services/releases/prediction/p7100/$version/ 

RUN mkdir -p /cacheDir/services/predictionmodel 
ADD target/predictionDependencies/star /cacheDir/services/predictionmodel/ #star here is the operator (*), it was being interpret as comments by this stackoverflow editor. 

ADD /target/prediction-0.0.13-SNAPSHOT.jar /cacheDir/services/releases/prediction/p7100/$version/prediction-0.0.13-SNAPSHOT.jar 

ADD /target/instance.properties /cacheDir/services/releases/prediction/p7100/$version/instance.properties 

ADD /target/logback.xml /cacheDir/services/releases/prediction/p7100/$version/logback.xml 

RUN ls -ltr /cacheDir/services/live/prediction/p7100/$version/ 
RUN ls -ltr /cacheDir/services/releases/prediction/p7100/$version/ 
RUN ls -ltr /cacheDir/services/predictionmodel 

ENTRYPOINT java -server -Xmx2g -Xloggc:/cacheDir/services/live/prediction/p7100/$version/logs/gc.log -verbose:gc -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/cacheDir/services/live/prediction/p7100/$version/oom.dump -Dlogback.configurationFile=/cacheDir/services/releases/prediction/p7100/$version/logback.xml -Dlog.home=/cacheDir/services/live/prediction/p7100/$version/logs -Dlogback.debug=true -Dbroker.l^Ct=sv-kafka6.pv.sv.nextag.com:9092,sv-kafka7.pv.sv.nextag.com:9092,sv-kafka8.pv.sv.nextag.com:9092,sv-kafka9.pv.sv.nextag.com:9092 -jar /cacheDir/services/releases/prediction/p7100/$version/prediction-0.0.13-SNAPSHOT.jar 7100 /cacheDir/services/releases/prediction/p7100/$version/instance.properties /com/wizecommerce/services/qa & 

コマンドは、イメージを構築するために使用されます。

docker build --build-arg version=0.0.14-SNAPSHOT -t prediction:0.0.14-SNAPSHOT . 

イメージは成功したようです。しかし、私はコマンドを実行すると、コンテナは自分自身で終了します。実行コマンド使用:

docker run -p 7100:7100 -v ~/PredictionVolume/logs/:/cacheDir/services/live/prediction/p7100/0.0.14-SNAPSHOT/logs/ -t prediction:0.0.14-SNAPSHOT 

実行中のコンテナを表示しようとすると、実行されていませんでした。

私が見つけたこれらのトウソリューションで作業を試みましたが、どれもうまくいかないようです。

How do I use Docker environment variable in ENTRYPOINT array?

他のソリューション私はこの1つに置き換え、次のENTRYPOINTコマンドを使用したことでした。

ENTRYPOINT ["sh","-c","java","-server","-Xmx2g","-Xloggc:/cacheDir/services/live/prediction/p7100/${version}/logs/gc.log","-verbose:gc","-XX:+PrintGCDateStamps","-XX:+PrintGCDetails","-XX:+HeapDumpOnOutOfMemoryError","-XX:HeapDumpPath=/cacheDir/services/live/prediction/p7100/${version}/oom.dump","-Dlogback.configurationFile=/cacheDir/services/releases/prediction/p7100/${version}/logback.xml","-Dlog.home=/cacheDir/services/live/prediction/p7100/${version}/logs","-Dlogback.debug=true","-Dbroker.l^Ct=sv-kafka6.pv.sv.nextag.com:9092,sv-kafka7.pv.sv.nextag.com:9092,sv-kafka8.pv.sv.nextag.com:9092,sv-kafka9.pv.sv.nextag.com:9092","-jar","/cacheDir/services/releases/prediction/p7100/${version}/prediction-0.0.13-SNAPSHOT.jar","7100","/cacheDir/services/releases/prediction/p7100/${version}/instance.properties","/com/wizecommerce/services/qa","&"] 

しかし、あなたが使用するために利用できるすべてのオプション画面(端末)に表示されます示し、端末上でJavaを入力する場合は、このコマンドで出力は、のようにしています。

誰でも方法を提案できますか? ありがとうございます!

答えて

4

これを試してみてください:

ENTRYPOINT ["sh","-c","java -server -Xmx2g ..."] 

あなたがsh -cを使用する場合、それはあなたがコマンドライン上で入力された場合と同様に、スペースは引数を分離して、実行するコマンドである単一の引数を期待。あなたは現在javaを実行しており、追加の不適切な引数をshに渡しています。

また、末尾にアンパサンド&を削除してください。プロセスをバックグラウンドで処理したくない場合があります。

+0

ありがとう、@ jonathon-reinhart。私は本当にそれを、特にポイントの説明に感謝します。それは完璧にうまくいった。 –

関連する問題