Dies wird in IBM Bluemix ausgeführt.
Ich benutze eine Java Ninja Framework App, als eigenständiges JAR (die Embedded Jetty verwendet). Wenn ich es lokal ausführen:
$ java -jar -Dninja.port=4444 new-app-1.0.0.jar
Die App startet, und lauscht auf Port 4444: o.e.jetty.server.ServerConnector - Started [email protected]{HTTP/1.1}{0.0.0.0:4444}
Dies ist jedoch nicht möglich, wenn auf CF. drängen
ich im Manifest versucht:
---
applications:
- path: "./target/new-app-1.0.0.jar"
memory: "500m"
name: "foo-new-app"
env:
JAVA_OPTS: "-Dninja.port=$PORT"
buildpack: java_buildpack
Die App immer auf 8080 lauschen (Standard):
OUT 03:25:29.979 [main] INFO o.e.jetty.server.ServerConnector - Started [email protected]{HTTP/1.1}{0.0.0.0:8080}
Und so ist die App nicht Health, auf dem seit seinem Zuhören falscher Port
die Vorschläge für @sabha Nach lief ich
CF_TRACE=true cf app foo-new-app
Und hier ist der erfasste Startbefehl:
"detected_start_command":"CALCULATED_MEMORY=$($PWD/.java-buildpack/open_jdk_jre/bin/java-buildpack-memory-calculator-2.0.2_RELEASE -memorySizes=metaspace:64m.. -memoryWeights=heap:75,metaspace:10,native:10,stack:5 -memoryInitials=heap:100%,metaspace:100% -totMemory=$MEMORY_LIMIT) && JAVA_OPTS=\"-Djava.io.tmpdir=$TMPDIR -XX:OnOutOfMemoryError=$PWD/.java-buildpack/open_jdk_jre/bin/killjava.sh $CALCULATED_MEMORY -Dninja.port=\" && eval exec $PWD/.java-buildpack/open_jdk_jre/bin/java $JAVA_OPTS -cp $PWD/. ninja.standalone.NinjaJetty"
Es ist wie der -Dninja.port
arg sieht nicht richtig eingestellt:
-Dninja.port=\"
Wenn ich in der Bluemix Konsole (Umgebungsvariablen) zu buchen, ist es das, was ich für die JAVA_OPTS
Variable sehen:
-Dninja.port=$PORT
Ist Bluemix dies nicht richtig umgehen? Ich sollte in der Lage sein, $ PORT nach den CF-Dokumenten dort zu verwenden.
Hier ist, wo die java_buildpack docs mit $ PORT als Argument beschreiben: https://github.com/cloudfoundry/java-buildpack/blob/master/docs/framework-java_opts.md#escaping-strings
Wieder @sabha folgenden, ich am Ende mit: JAVA_OPTS="-Dninja.port=\\$PORT"
Versuchte Ihre Vorschläge und aktualisierte Frage. Guck mal rein? – mtyson
Es wird angezeigt, dass $ PORT vor der eigentlichen Ausführung vom Buildpack interpretiert wird. Entkomme den $ PORT wie folgt und das Java-Buildpack verwendet es einfach wie ein Literal und der Arg wird in der letzten Laufzeit interpretiert: – sabha