2017-08-30 4 views
0

J'ai créé mon Dockerfile où je veux créer une simple Spring Boot Webapp à l'écoute sur un port.Le paramètre système Spring est ignoré

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 

Mes webapps application.properties définit les éléments suivants:

server.port=666 

À partir de mon conteneur docker via IntelliJ Docker Plugin Je lui donne le paramètre:

port=555

Courir docker inspect bootapp (bootapp est le nom du conteneur) me donne des informations sur variable d'environnement port e et le point d'entrée:

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

Et journal Bottes de printemps dit ceci:

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

Ainsi, le port défini dans application.properties n'a pas été réécrite par un paramètre d'exécution.

Cela me dit que EXPOSE=$port a effectivement pu être résolu mais que la variable dans ENTRYPOINT ne l'était pas.

Je l'ai déjà changé ENTRYPOINT écosser forme, mais cela n'a pas aidé que vous pouvez voir à travers mon Dockerfile

+0

Êtes-vous sûr que le var env est pas résolu, ce qu'il fait sortie si vous changez votre ligne entrypoint à: echo 'de ENTRYPOINT java -jar /dockertest.jar -Djava.security.egd = fichier:/dev /./ urandom -Dserver.port = $ port' – BMitch

+0

Vous avez raison. Je viens juste de comprendre que jvm ignore mon paramètre d'exécution '-Dserver.port'. – xetra11

Répondre

0

La variable système était au mauvais endroit dans la commande d'exécution Java. Il doit être placé avant l'option -jar.

Mauvais

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

droit

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