2017-08-30 22 views
0

ポートでリッスンしている簡単なスプリングブートWebアプリケーションを作成したい場所にDockerfileを作成しました。スプリングシステムパラメータが無視されています

FROM java:8 
VOLUME /tmp 
ENV port=123 
#WORKDIR /workdir 
ADD /target/docker-test-0.1.jar dockertest.jar 
EXPOSE $port 
RUN bash -c 'touch /dockertest.jar' 
#ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom -Dserver.port=$port","-jar","/dockertest.jar"] 
ENTRYPOINT java -jar /dockertest.jar -Djava.security.egd=file:/dev/./urandom -Dserver.port=$port 

私のwebapps application.propertiesは、次のように定義しています

のIntelliJドッカープラグインを経由して私のドッキングウィンドウコンテナを開始
server.port=666 

私はそれを、パラメータを与える:

docker inspect bootappを実行

port=555

(bootappはコンテナーの名前です) Eポートの環境変数とエントリポイント:

"Entrypoint" : [ "/bin/sh", "-c", "java -jar /dockertest.jar -Djava.security.egd=file:/dev/./urandom -Dserver.port=$port" ], 
    "Env" : [ "port=555", ...], 

と春ブーツログは、この意見:

2017-08-30 20:10:07.709 INFO 5 --- [main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 666 (http) 

だから application.propertiesで定義されたポートは、実行時パラメータによって上書きされていませんでした。

これは実際にはEXPOSE=$portが解決されましたが、ENTRYPOINTの変数は解決されていないことを示しています。

私はすでにフォームをシェルにENTRYPOINTを変更していますが、システム変数は、Javaの実行コマンドで間違った場所にいた私のDockerfile

+0

は、あなたがあなたのエントリポイントの行を変更した場合、それに出力を何、あなたのenv varが解決されていないよろしいですjava -jar /dockertest.jar -Djava.security.egd = file:/ dev /./ urandom -Dserver.port = $ port' – BMitch

+0

あなたはそうです。私は、jvmが '-Dserver.port'ランタイムパラメータを無視していることを知りました。 – xetra11

答えて

0

を通じて見ることができるように、その助けはしませんでした。 -jarオプションの前に配置する必要があります。 `ENTRYPOINTエコー:

間違っ

ENTRYPOINT java -jar /dockertest.jar -Djava.security.egd=file:/dev/./urandom -Dserver.port=$port 

は右

ENTRYPOINT java -Dserver.port=$port -jar /dockertest.jar -Djava.security.egd=file:/dev/./urandom 
関連する問題