چرا 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 آن به خودش اشاره میکند.
برای حالت اول، محیط Docker را که Testcontainers واقعاً استفاده میکند پیدا کنید. یک دیمن راه دور یا Docker Desktop ممکن است پیکربندی را از منبعی متفاوت از dockerd محلی بگیرد. هنگام افزودن یک پروکسی پیشفرض گسترده، سرویسهای آزمون محلی و API داکر را روی مسیرهای مورد نظرشان نگه دارید.