testcontainers / testcontainers/testcontainers-java

Stop waiting for port when container exited

オープン
#2,225 コメント 7 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

resolution/acknowledged
主要言語
Java
スター
8.7k
フォーク
1.9k
平均マージ
2日 17時間
マージ済み PR(30日)
9

説明

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

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

調査の方向性

GenericContainer.start と Wait.forListeningPort の起動待機パスから始め、次に false コマンドと公開ポートを使って Alpine の例を再現します。Docker がコンテナの終了を報告したときに起動待機が停止して速やかに失敗し、完全なタイムアウトまで待機しないことが完了条件です。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
docker, java
領域
testing
issue の種類
バグ
難易度
3/5
見積もり時間
1〜2日
活発さ
停滞
明瞭さ
おおむね明確
初心者へのやさしさ
45/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。