Testcontainers の withEnv がイメージ取得をプロキシしない理由
失敗した取得には Docker デーモンを設定してください。コンテナのプロキシ変数は、コンテナ作成後にしかプログラムに届きません。
Testcontainers がイメージ取得中に失敗した場合、これから作られるコンテナの withEnv 設定は役に立ちません。そのレジストリからのダウンロードは、コンテナが存在する前に Docker デーモンが実行するからです。
| 失敗した操作 | 確認すべきプロキシ設定 |
|---|---|
| イメージ取得 | テストが使用する Docker デーモンとそのレジストリ経路 |
| 実行中のコンテナ内でのダウンロード | そのコンテナ内でアプリケーションが対応する入力 |
| Java テストが Docker またはアプリに接続する | その接続を行う Java 側のクライアント |
2 つ目のケースでは、既存の GenericContainer 定義に環境変数を追加します。
container
.withEnv("http_proxy", "http://proxy.example:8080")
.withEnv("https_proxy", "http://proxy.example:8080");コンテナ内のダウンロードで公開 HTTP エンドポイントの使用が許されている場合は、HTTP プロキシ一覧からその値を入れてください。イメージ内のプログラムがそれらの変数を読む必要があります。任意のデータベースソケットが HTTP プロキシ通信になるわけではありません。エンドポイントはコンテナから到達可能でなければなりません。その 127.0.0.1 は自分自身を指します。
1 つ目のケースでは、Testcontainers が実際に使う Docker 環境を特定してください。リモートのデーモンや Docker Desktop は、ローカルの dockerd とは別のソースから設定を取ることがあります。広域なプロキシ既定値を追加するときは、ローカルのテストサービスと Docker API を本来の経路に保ってください。