testcontainers / testcontainers/testcontainers-java
Stop waiting for port when container exited
Offen
Dieses Issue hat noch niemand übernommen.
resolution/acknowledged
- Vorherrschende Sprache
- Java
- Sterne
- 8.7k
- Forks
- 1.9k
- Ø Merge
- 2 T. 17 Std.
- Gemergte PRs (30 T.)
- 9
Beschreibung
try (GenericContainer<?> genericContainer = new GenericContainer<>("alpine:3.7")) {
genericContainer
.withCommand("false") // exit quickly
.withExposedPorts(1234)
.waitingFor(Wait.forListeningPort().withStartupTimeout(Duration.ofSeconds(1000)))
.start(); // should fail quickly
}
Observed
Waiting for exposed port takes 1000s
Expected
Stop waiting for port, since container is exited.
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a8eb2b690815 alpine:3.7 "false" About a minute ago Exited (1) About a minute ago gifted_northcutt
e9ce5b30960c quay.io/testcontainers/ryuk:0.2.3 "/app" About a minute ago Up About a minute 0.0.0.0:33383->8080/tcp testcontainers-ryuk-7cf21936-f4ce-49ac-9ab8-6d278dcb07c0
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 GenericContainer.start und dem Wait.forListeningPort-Startup-Wartepfad und reproduziere dann das Alpine-Beispiel mit dem Befehl false und dem exponierten Port. Als erledigt gilt die Aufgabe, wenn das Warten auf den Startup beendet wird und der Vorgang umgehend fehlschlägt, sobald Docker meldet, dass der Container beendet wurde, anstatt die vollständige Timeout-Dauer abzuwarten.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- docker, java
- Bereich
- testing
- Issue-Typ
- Bug
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 45/100