testcontainers / testcontainers/testcontainers-java
Automatically map exposed ports defined in Dockerfile
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Java
- Sterne
- 8.7k
- Forks
- 1.9k
- Ø Merge
- 2 T. 17 Std.
- Gemergte PRs (30 T.)
- 9
Beschreibung
Typically a Docker image will declare what ports it exposes using:
EXPOSE <ports...>
Why is it also necessary to duplicate this information by default for GenericContainer?
Take the quick start example:
@Rule
public GenericContainer redis = new GenericContainer<>("redis:5.0.3-alpine")
.withExposedPorts(6379);
If the user does not explicitly state what ports to expose via withExposedPorts(), could we run DockerClientFactory.instance().client().inspectImageCmd(this.getDockerImageName()).exec(); to run a Docker image inspection and automatically read/set the ports exposed by the Docker image? I know there are situations where a user may not want to expose all (or any) ports of a container, but I think this would be the minority case for Testcontainers users, right?
If we were to do this, the above code example could simply be:
@Rule
public GenericContainer redis = new GenericContainer<>("redis:5.0.3-alpine");
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginne mit dem Lesen von GenericContainer und seiner Behandlung von withExposedPorts. Untersuche anschließend den im Issue beschriebenen Einstiegspunkt DockerClientFactory.instance().client().inspectImageCmd(...). Als abgeschlossen gilt die Aufgabe, wenn ein GenericContainer exponierte Ports aus dem Image ableiten kann, sofern keine angegeben wurden, während die expliziten Port- und No-Port-Fälle des Issues weiterhin definiert und verifiziert bleiben.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- docker, java
- Bereich
- testing, tooling
- Issue-Typ
- Feature
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 30/100