2016-07-19 21 views
3

Ich habe DockerfilePass Parameter Andockfenster Einstiegspunkt

FROM java:8 
ADD  my_app.jar /srv/app/my_app.jar 
WORKDIR /srv/app 
ENTRYPOINT ["java", "-jar", "my_app.jar", "--spring.config.location=classpath:/srv/app/configs/application.properties"] 

Wie ich ohne ./run.sh in Einstiegspunkt dynamische paramethers für Java zu tun? (wie -Dversion=$version oder andere)

Ich möchte diese Parameter beim Start Container übergeben.

--entrypoint something nicht auf Docker funktioniert 1,11;. (

+2

Hat du nur versuchen, Putting, dass (Befehl)? Es sollte an den ENTRYPOINT angehängt werden. Siehe: https://docs.docker.com/engine/reference/run/#/cmd-default-command-or-options - oder meintest du etwas anderes? – ldg

Antwort

4

Sie Ihre dynamischen Parameter am Ende der docker run ... anhängen Sie haben jede CMD Anweisung nicht angegeben, so dass es funktionieren wird

. Was ist eigentlich laufen, ohne einen Befehl am Ende Angabe, wenn die docker run ... ausgeführt wird, ist dies:

ENTRYPOINT CMD (es ist verketteten und es gibt einen Raum dazwischen)

So kann man auch so etwas wie

... 
ENTRYPOINT ["java", "-jar", "my_app.jar"] 
CMD ["--spring.config.location=classpath:/srv/app/configs/application.properties"] 

verwenden, was bedeutet, wenn

docker run mycontainer den

java -jar my_app.jar --spring.config.location=classpath:/srv/app/configs/application.properties

wird aufgerufen (der Standard-Fall), aber beim Laufen

docker run mycontainer --spring.config.location=classpath:/srv/app/configs/some_other_application.properties -Dversion=$version

am Ende des Laufs (oder ähnlich) Anweisung als CMD

es wird w/verschiedene Eigenschaftsdatei und mit der Systemeigenschaft genannt version ausgeführt werden (den Standardfall zwingenden)

+0

Doing das Gleiche funktioniert nicht für mich.Ich bekomme 'docker: Fehler Antwort von Daemon: ungültige Header Feld Wert" Oci Laufzeitfehler: container_linux.go: 247: Start-Container-Prozess verursacht \ "exec: \\\" - Dversion = 1243 \\\ ": Die ausführbare Datei wurde nicht in $ PATH \" \ n "gefunden. Der einzige Unterschied, den ich sehen kann, sind die anderen Parameter, die ich in der Befehlszeile verwende, und sie möglicherweise vor den Namen des Docker-Images setzen. – Adam

+0

Java ist nicht in Ihrem $ PATH .. also fügen Sie es entweder hinzu oder verwenden Sie den vollständigen Pfad zur Java-Binärdatei –