Warum Testcontainers withEnv Image-Pulls nicht über einen Proxy leitet
Konfigurieren Sie den Docker-Daemon für einen fehlgeschlagenen Pull; Proxy-Variablen im Container erreichen Programme erst, nachdem der Container erstellt wurde.
Wenn Testcontainers beim Pull eines Images fehlschlägt, können die withEnv-Einstellungen des künftigen Containers nicht helfen. Der Docker-Daemon führt diesen Download aus der Registry aus, bevor der Container existiert.
| Fehlgeschlagene Operation | Zu prüfende Proxy-Konfiguration |
|---|---|
| Image-Pull | Der vom Test verwendete Docker-Daemon und seine Route zur Registry |
| Download im laufenden Container | Die von der Anwendung unterstützten Eingaben in diesem Container |
| Java-Test verbindet sich mit Docker oder der Anwendung | Der Java-Client, der diese Verbindung aufbaut |
Für den zweiten Fall fügen Sie der vorhandenen GenericContainer-Definition Umgebungsvariablen hinzu:
container
.withEnv("http_proxy", "http://proxy.example:8080")
.withEnv("https_proxy", "http://proxy.example:8080");Wenn ein Download im Container einen öffentlichen HTTP-Endpunkt verwenden darf, füllen Sie diese Werte aus der HTTP-Proxy-Liste. Das Programm im Image muss diese Variablen lesen. Sie machen aus einem beliebigen Datenbank-Socket keinen HTTP-Proxy-Datenverkehr. Der Endpunkt muss außerdem aus dem Container erreichbar sein: sein 127.0.0.1 verweist auf ihn selbst.
Suchen Sie für den ersten Fall die Docker-Umgebung, die Testcontainers tatsächlich nutzt. Ein entfernter Daemon oder Docker Desktop bezieht die Konfiguration möglicherweise aus einer anderen Quelle als ein lokaler dockerd. Halten Sie lokale Testdienste und die Docker-API auf ihren vorgesehenen Routen, wenn Sie einen breiten Proxy-Standardwert hinzufügen.