2016-10-27 1 views
0

jenkins aus offiziellen Docker Bild von jenkinsWie kann env.BUILD_URL in Jenkins, die im Docker-Container ausgeführt werden, die externe Netzwerk-Portnummer richtig erhalten?

Ausprobieren
docker run -d -p 8090:8080 jenkins 

Bitte beachte, dass ich 8090 Port meines Gastgebers gewählt haben, um die Docker des Containers 8080 Port abzubilden.

nun innerhalb jenkins, ich bin eine Probe Pipeline laufen, wo ich nur eine Zeile

echo "${env.BUILD_URL}" 

Als Ergebnis dieser Pipeline-Skript haben, zeigt die Pipeline Konsolenausgabe folgende

http://localhost:8090/job/sample_pipeline/1/ 

Beachten Sie die Portnummer 8090?

Meine Frage ist,

Wie jenkins aus dem Inneren des Behälters weiß, dass ich 8090 als Host-Port festgelegt haben, die an den jenkins Containers 8080 Port Karte sollte?

Ich meine, mit env.BUILD_URL aus dem Inneren des Docker Container aufgerufen wird, soll nicht jenkins in seine eigenen Host suchen und das Rück Port 8080 als Portnummer, wo es läuft?

Jenkins sollte nicht wissen, dass es als Container ausgeführt wird und dass es außerhalb seines Containerbereichs suchen muss, um festzustellen, welcher externen Portnummer es zugeordnet ist?

Antwort

0

Da Sie http://localhost:8090 verwenden, um auf die Konsole zugreifen und den Build auslösen, würde ich vermuten, dass es von dort abholt.

Verwandte Themen