diff --git a/modules/mongodb/src/main/java/org/testcontainers/containers/MongoDBContainer.java b/modules/mongodb/src/main/java/org/testcontainers/containers/MongoDBContainer.java index 81bb59fd69d..cd2294e09ac 100644 --- a/modules/mongodb/src/main/java/org/testcontainers/containers/MongoDBContainer.java +++ b/modules/mongodb/src/main/java/org/testcontainers/containers/MongoDBContainer.java @@ -5,6 +5,7 @@ import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.testcontainers.containers.wait.strategy.Wait; +import org.testcontainers.utility.ComparableVersion; import org.testcontainers.utility.DockerImageName; import java.io.IOException; @@ -29,6 +30,8 @@ public class MongoDBContainer extends GenericContainer { private static final String MONGODB_DATABASE_NAME_DEFAULT = "test"; + private final boolean isAtLeastVersion6; + /** * @deprecated use {@link MongoDBContainer(DockerImageName)} instead */ @@ -45,6 +48,8 @@ public MongoDBContainer(final DockerImageName dockerImageName) { super(dockerImageName); dockerImageName.assertCompatibleWith(DEFAULT_IMAGE_NAME); + this.isAtLeastVersion6 = new ComparableVersion(dockerImageName.getVersionPart()).isGreaterThanOrEqualTo("6.0"); + withExposedPorts(MONGODB_INTERNAL_PORT); withCommand("--replSet", "docker-rs"); waitingFor(Wait.forLogMessage("(?i).*waiting for connections.*", 1)); @@ -87,7 +92,8 @@ protected void containerIsStarted(InspectContainerResponse containerInfo) { } private String[] buildMongoEvalCommand(final String command) { - return new String[] { "mongo", "--eval", command }; + String cmd = this.isAtLeastVersion6 ? "mongosh" : "mongo"; + return new String[] { cmd, "--eval", command }; } private void checkMongoNodeExitCode(final Container.ExecResult execResult) { diff --git a/modules/mongodb/src/test/java/org/testcontainers/containers/MongoDBContainerTest.java b/modules/mongodb/src/test/java/org/testcontainers/containers/MongoDBContainerTest.java index ff6d0d6ccba..acaa6c8e5d8 100644 --- a/modules/mongodb/src/test/java/org/testcontainers/containers/MongoDBContainerTest.java +++ b/modules/mongodb/src/test/java/org/testcontainers/containers/MongoDBContainerTest.java @@ -98,4 +98,11 @@ public void shouldTestDatabaseName() { assertThat(mongoDBContainer.getReplicaSetUrl(databaseName)).endsWith(databaseName); } } + + @Test + public void supportsMongoDB_6() { + try (final MongoDBContainer mongoDBContainer = new MongoDBContainer("mongo:6.0.1")) { + mongoDBContainer.start(); + } + } }