Eine Compose-Proxy-Variable in einen Container durchreichen
Machen Sie Proxy-Variablen zum Teil der Compose-Dienstumgebung, statt anzunehmen, dass eine .env-Datei des Projekts sie automatisch einfügt.
Die Projektdatei .env von Compose liefert Werte für die Interpolation. Um einen dieser Werte an einen Container weiterzugeben, referenzieren Sie ihn in der Dienstkonfiguration.
Zum Beispiel enthält .env den Proxy-Endpunkt:
HTTP_PROXY=http://203.0.113.10:8080
Der Dienst verwendet ihn für Anfragen an HTTP- und HTTPS-Ziele:
services:
app:
image: your-image
environment:
HTTP_PROXY: "${HTTP_PROXY}"
HTTPS_PROXY: "${HTTP_PROXY}"
Ersetzen Sie die Dokumentationsadresse und das Image; wählen Sie einen kompatiblen HTTP-Endpunkt aus Ihrem Dienst oder der Liste der HTTP-Proxys. Ein gewöhnlicher HTTP-Proxy kann HTTPS über CONNECT übertragen, wenn er den angeforderten Tunnel unterstützt.
Ein expliziter env_file-Eintrag ist eine weitere Möglichkeit, die Variablen einer gewählten Datei an einen Dienst zu übergeben. Die Interpolationsdatei des Projekts wirkt nicht als impliziter env_file des Containers.
Prüfen, was bei der Anwendung angekommen ist
docker compose config zeigt die aufgelöste Dienstkonfiguration. docker compose config --environment zeigt stattdessen die für die Interpolation verwendeten Werte.
Vergleichen Sie die Dienstumgebung mit dem Anwendungsprozess. Ein bestehender Container erhält keine neuen Werte, wenn Sie .env bearbeiten; wenden Sie die Änderung über den vorgesehenen Compose-Lebenszyklus an und rechnen Sie mit einer Dienstunterbrechung.
Wenn die Variable fehlt, korrigieren Sie die Dienstkonfiguration. Wenn sie vorhanden ist, Anfragen aber weiterhin direkt erfolgen, prüfen Sie die Proxy-Unterstützung des HTTP-Clients. Die Umgebungsinjektion liefert die Konfiguration; die Anwendung muss sie nutzen.