لماذا لا يوجّه 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 المحلي الأصلي. أبقِ خدمات الاختبار المحلية وواجهة Docker API على مساراتها المقصودة عند إضافة إعداد وسيط عام.