テスト構成を見ないとはっきりとは言えませんが、docker run
で動作すると思います。 docker run
であるため、Testcontainersではありません 固定ポート(常に27017)を公開しますが、Testcontainersはポート27017
を公開します ランダムポートとして (テストマシンでのポートの競合を回避するため)
QuarkusテストでTestcontainersを使用するには、テストは次のフローに従う必要があります。
- コンテナを起動します。これが必要なのは、MongoDBのランダムに公開されたポートは後でしか知ることができないためです。 コンテナが開始されました。
-
コンテナの起動後にTestcontainersからランダム化されたポートを取得し、コンテナポートに依存するテスト構成プロパティを設定します。例:
static GenericContainer mongodb = new GenericContainer<>("mongo:4.2").withExposedPorts(27017); static { mongodb.start(); System.setProperty("quarkus.mongodb.connection-string", "mongodb://" + mongodb.getContainerIpAddress() + ":" + mongodb.getFirstMappedPort()); }
- Quarkusを始めましょう。 Quarkusは動的構成をサポートしていないため、Quarkusを起動する前にMongoDBポートを設定する必要があります。