Testcontainers withEnv가 이미지 풀을 프록시하지 않는 이유
실패한 풀에는 Docker 데몬을 구성하세요. 컨테이너의 프록시 변수는 컨테이너가 만들어진 뒤에야 프로그램에 닿습니다.
Testcontainers가 이미지를 풀하다 실패하면 앞으로 만들어질 컨테이너의 withEnv 설정은 도움이 되지 않습니다. 그 레지스트리 다운로드는 컨테이너가 존재하기 전에 Docker 데몬이 수행합니다.
| 실패한 작업 | 확인해야 할 프록시 구성 |
|---|---|
| 이미지 풀 | 테스트가 사용하는 Docker 데몬과 그 레지스트리 경로 |
| 실행 중인 컨테이너 내부의 다운로드 | 해당 컨테이너에서 애플리케이션이 지원하는 입력 |
| Java 테스트가 Docker 또는 앱에 연결 | 그 연결을 만드는 Java 클라이언트 |
두 번째 경우에는 기존 GenericContainer 정의에 환경 변수를 추가하세요:
container
.withEnv("http_proxy", "http://proxy.example:8080")
.withEnv("https_proxy", "http://proxy.example:8080");컨테이너 내부 다운로드가 공용 HTTP 엔드포인트를 사용해도 된다면, 해당 값을 HTTP 프록시 목록에서 채우세요. 이미지 안의 프로그램이 그 변수를 읽어야 합니다. 그 변수가 임의의 데이터베이스 소켓을 HTTP 프록시 트래픽으로 바꾸지는 않습니다. 엔드포인트는 컨테이너에서 도달할 수 있어야 합니다. 127.0.0.1는 자기 자신을 가리킵니다.
첫 번째 경우에는 Testcontainers가 실제로 사용하는 Docker 환경을 찾으세요. 원격 데몬이나 Docker Desktop은 로컬 dockerd와 다른 원본에서 구성을 가져올 수 있습니다. 광범위한 프록시 기본값을 추가할 때는 로컬 테스트 서비스와 Docker API를 의도한 경로에 유지하세요.