2017-08-30 85 views
0

我創建了我的Dockerfile,我想創建一個簡單的Spring Boot Webapp監聽端口。彈簧系統參數被忽略

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定義如下:

server.port=666 

開始通過的IntelliJ泊塢窗插件我的搬運工容器我給它的參數:

port=555

運行docker inspect bootapp (bootapp是容器名稱)給我關於th的信息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中的變量不是。

我已經變的入口點到外殼形式,但這並沒有幫助,你可以看到通過我的Dockerfile

+0

你確定的環境變量沒有被解決,如果你改變你的入口點線是什麼輸出:'入口點回聲java -jar /dockertest.jar -Djava.security.egd = file:/ dev /./ urandom -Dserver.port = $ port' – BMitch

+0

你是對的。我只知道jvm忽略了我的'-Dserver.port'運行時參數。 – xetra11

回答

0

系統變量是在Java執行命令有錯誤的地方。 它必須放在-jar選項之前。

錯誤

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