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
Ê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
Vous avez raison. Je viens juste de comprendre que jvm ignore mon paramètre d'exécution '-Dserver.port'. – xetra11