Spring-Boot-Image-Builds: Den Proxy des Paketo-Builders konfigurieren
Übergeben Sie Proxyvariablen über Gradle bootBuildImage oder Maven image.env an einen Paketo-Builder, getrennt vom Build-Tool und vom Docker-Daemon.
Ein Build-Tool kann seine Abhängigkeiten erfolgreich auflösen, während ein Paketo-Buildpack keine Laufzeit herunterladen kann. Das Buildpack läuft im Builder-Container und benötigt seine eigene Proxy-Konfiguration.
Die bootBuildImage-Aufgabe von Gradle
In einer Groovy-build.gradle mit der vorhandenen bootBuildImage-Aufgabe von Spring Boot:
tasks.named("bootBuildImage") {
environment["HTTP_PROXY"] = "http://proxy.example:8080"
environment["HTTPS_PROXY"] = "http://proxy.example:8080"
}
Das Maven-Plugin verwendet image.env
Für spring-boot:build-image platzieren Sie diese Werte unter image.env in der vorhandenen Konfiguration des Spring-Boot-Maven-Plugins:
<configuration>
<image>
<env>
<HTTP_PROXY>http://proxy.example:8080</HTTP_PROXY>
<HTTPS_PROXY>http://proxy.example:8080</HTTPS_PROXY>
</env>
</image>
</configuration>
Sowohl die Aufgabenumgebung von Gradle als auch image.env von Maven liefern Werte an den Builder. Beide Namen können denselben gewöhnlichen HTTP-Vermittler bezeichnen, auch für HTTPS-Artefakt-URLs. Für öffentliche Artefakt-Downloads, die über öffentliche Proxys erlaubt sind, liefert die HTTP-Proxy-Liste Kandidaten für diese Builder-Werte.
Diese Einstellung ist unabhängig von Gradles systemProp.http.proxyHost-Eigenschaften. Diese gehören zur JVM und konfigurieren nicht automatisch einen anderen Prozess im Builder.
Der Docker-Daemon muss zuerst die benötigten Builder- und Laufzeit-Images beschaffen. Ein Registry-Fehler in dieser früheren Phase erfordert die Route und Registry-Konfiguration des Daemons und nicht eine Variable, die einem noch nicht gestarteten Buildpack übergeben wird.
Verwenden Sie einen Proxy-Endpunkt, der aus dem Builder-Container erreichbar ist. Dessen Loopback-Adresse kennzeichnet diesen Container, nicht unbedingt den Arbeitsplatz des Entwicklers.
Halten Sie auch die Laufzeitumgebung der fertigen Anwendung bewusst. Zugriff zur Build-Zeit und die Route, die beim späteren Betrieb der Anwendung verwendet wird, sind getrennte Konfigurationsentscheidungen.