Vì sao Testcontainers withEnv không đưa việc kéo image qua proxy
Cấu hình daemon Docker cho lần kéo thất bại; các biến proxy của container chỉ đến được chương trình sau khi container được tạo.
Nếu Testcontainers thất bại khi kéo một image, các thiết lập withEnv của container sắp tạo không thể giúp gì. Chính daemon Docker thực hiện việc tải đó từ registry trước khi container tồn tại.
| Thao tác thất bại | Cấu hình proxy cần kiểm tra |
|---|---|
| Kéo image | Daemon Docker mà bài kiểm thử dùng và đường đi của nó tới registry |
| Tải xuống bên trong container đang chạy | Các đầu vào mà ứng dụng hỗ trợ trong container đó |
| Bài kiểm thử Java kết nối tới Docker hoặc ứng dụng | Ứng dụng khách Java thực hiện kết nối đó |
Với trường hợp thứ hai, thêm biến môi trường vào định nghĩa GenericContainer hiện có:
container
.withEnv("http_proxy", "http://proxy.example:8080")
.withEnv("https_proxy", "http://proxy.example:8080");Nếu một lần tải xuống bên trong container được phép dùng điểm cuối HTTP công khai, hãy điền các giá trị đó từ danh sách proxy HTTP. Chương trình trong image phải đọc các biến đó. Chúng không biến một socket cơ sở dữ liệu bất kỳ thành lưu lượng proxy HTTP. Điểm cuối cũng phải truy cập được từ container: 127.0.0.1 của nó trỏ tới chính nó.
Với trường hợp thứ nhất, hãy tìm môi trường Docker mà Testcontainers thực sự dùng. Một daemon từ xa hoặc Docker Desktop có thể lấy cấu hình từ nguồn khác với dockerd cục bộ. Giữ các dịch vụ kiểm thử cục bộ và API Docker trên đúng tuyến đường dự định khi thêm một proxy mặc định rộng.