หาก Testcontainers ล้มเหลวระหว่างดึงอิมเมจ การตั้งค่า withEnv ของคอนเทนเนอร์ที่จะเกิดใหม่ช่วยไม่ได้ เพราะ Docker daemon เป็นผู้ดาวน์โหลดจากรีจิสทรีก่อนที่คอนเทนเนอร์จะมีอยู่

การทำงานที่ล้มเหลวการกำหนดค่าพร็อกซีที่ต้องตรวจ
การดึงอิมเมจDocker daemon ที่การทดสอบใช้ และเส้นทางไปยังรีจิสทรี
การดาวน์โหลดภายในคอนเทนเนอร์ที่กำลังทำงานอินพุตที่แอปพลิเคชันรองรับในคอนเทนเนอร์นั้น
การทดสอบ 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 ใช้จริง ๆ daemon ระยะไกลหรือ Docker Desktop อาจดึงการกำหนดค่าจากแหล่งอื่นที่ไม่ใช่ dockerd ภายในเครื่อง เมื่อเพิ่มพร็อกซีเริ่มต้นแบบกว้าง ให้คงบริการทดสอบภายในเครื่องและ Docker API ไว้บนเส้นทางที่ตั้งใจไว้

บทความที่เกี่ยวข้อง