Γιατί το 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 στις προβλεπόμενες διαδρομές τους όταν προσθέτετε μια ευρεία προεπιλογή διαμεσολαβητή.