From d5809e4fe815ed476e5e625eeb9b0436df6b661f Mon Sep 17 00:00:00 2001 From: Phillip Webb Date: Mon, 19 May 2025 19:31:40 -0700 Subject: [PATCH] Move MongoDB Docker Compose support into spring-boot-mongodb --- .../src/main/resources/META-INF/spring.factories | 1 - spring-boot-project/spring-boot-mongodb/build.gradle | 6 ++++++ ...rComposeConnectionDetailsFactoryIntegrationTests.java | 2 +- .../mongodb/docker/compose/mongo-bitnami-compose.yaml | 9 +++++++++ .../boot/mongodb/docker/compose/mongo-compose.yaml | 9 +++++++++ .../MongoDockerComposeConnectionDetailsFactory.java | 2 +- .../boot/mongodb/docker/compose}/MongoEnvironment.java | 2 +- .../boot/mongodb/docker/compose}/package-info.java | 4 ++-- .../src/main/resources/META-INF/spring.factories | 1 + .../mongodb/docker/compose}/MongoEnvironmentTests.java | 2 +- 10 files changed, 31 insertions(+), 7 deletions(-) rename spring-boot-project/{spring-boot-docker-compose-all/src/dockerTest/java/org/springframework/boot/docker/compose/service/connection/mongo => spring-boot-mongodb/src/dockerTest/java/org/springframework/boot/mongodb/docker/compose}/MongoDockerComposeConnectionDetailsFactoryIntegrationTests.java (97%) create mode 100644 spring-boot-project/spring-boot-mongodb/src/dockerTest/resources/org/springframework/boot/mongodb/docker/compose/mongo-bitnami-compose.yaml create mode 100644 spring-boot-project/spring-boot-mongodb/src/dockerTest/resources/org/springframework/boot/mongodb/docker/compose/mongo-compose.yaml rename spring-boot-project/{spring-boot-docker-compose-all/src/main/java/org/springframework/boot/docker/compose/service/connection/mongo => spring-boot-mongodb/src/main/java/org/springframework/boot/mongodb/docker/compose}/MongoDockerComposeConnectionDetailsFactory.java (97%) rename spring-boot-project/{spring-boot-docker-compose-all/src/main/java/org/springframework/boot/docker/compose/service/connection/mongo => spring-boot-mongodb/src/main/java/org/springframework/boot/mongodb/docker/compose}/MongoEnvironment.java (95%) rename spring-boot-project/{spring-boot-docker-compose-all/src/main/java/org/springframework/boot/docker/compose/service/connection/mongo => spring-boot-mongodb/src/main/java/org/springframework/boot/mongodb/docker/compose}/package-info.java (81%) rename spring-boot-project/{spring-boot-docker-compose-all/src/test/java/org/springframework/boot/docker/compose/service/connection/mongo => spring-boot-mongodb/src/test/java/org/springframework/boot/mongodb/docker/compose}/MongoEnvironmentTests.java (97%) diff --git a/spring-boot-project/spring-boot-docker-compose-all/src/main/resources/META-INF/spring.factories b/spring-boot-project/spring-boot-docker-compose-all/src/main/resources/META-INF/spring.factories index a78fd14879..9ebfc69c1c 100644 --- a/spring-boot-project/spring-boot-docker-compose-all/src/main/resources/META-INF/spring.factories +++ b/spring-boot-project/spring-boot-docker-compose-all/src/main/resources/META-INF/spring.factories @@ -2,7 +2,6 @@ org.springframework.boot.autoconfigure.service.connection.ConnectionDetailsFactory=\ org.springframework.boot.docker.compose.service.connection.clickhouse.ClickHouseR2dbcDockerComposeConnectionDetailsFactory,\ org.springframework.boot.docker.compose.service.connection.mariadb.MariaDbR2dbcDockerComposeConnectionDetailsFactory,\ -org.springframework.boot.docker.compose.service.connection.mongo.MongoDockerComposeConnectionDetailsFactory,\ org.springframework.boot.docker.compose.service.connection.mysql.MySqlR2dbcDockerComposeConnectionDetailsFactory,\ org.springframework.boot.docker.compose.service.connection.neo4j.Neo4jDockerComposeConnectionDetailsFactory,\ org.springframework.boot.docker.compose.service.connection.oracle.OracleFreeR2dbcDockerComposeConnectionDetailsFactory,\ diff --git a/spring-boot-project/spring-boot-mongodb/build.gradle b/spring-boot-project/spring-boot-mongodb/build.gradle index 15f64aa806..630abc621e 100644 --- a/spring-boot-project/spring-boot-mongodb/build.gradle +++ b/spring-boot-project/spring-boot-mongodb/build.gradle @@ -3,6 +3,7 @@ plugins { id "org.springframework.boot.auto-configuration" id "org.springframework.boot.configuration-properties" id "org.springframework.boot.deployed" + id "org.springframework.boot.docker-test" id "org.springframework.boot.optional-dependencies" } @@ -12,6 +13,7 @@ dependencies { api(project(":spring-boot-project:spring-boot")) optional(project(":spring-boot-project:spring-boot-autoconfigure")) + optional(project(":spring-boot-project:spring-boot-docker-compose")) optional(project(":spring-boot-project:spring-boot-reactor")) optional(project(":spring-boot-project:spring-boot-testcontainers")) optional("io.netty:netty-transport") @@ -19,6 +21,10 @@ dependencies { optional("org.mongodb:mongodb-driver-sync") optional("org.testcontainers:mongodb") + dockerTestImplementation(project(":spring-boot-project:spring-boot-test")) + dockerTestImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support-docker")) + dockerTestImplementation(testFixtures(project(":spring-boot-project:spring-boot-docker-compose"))) + testImplementation(project(":spring-boot-project:spring-boot-test")) testImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support")) testImplementation(testFixtures(project(":spring-boot-project:spring-boot-testcontainers"))) diff --git a/spring-boot-project/spring-boot-docker-compose-all/src/dockerTest/java/org/springframework/boot/docker/compose/service/connection/mongo/MongoDockerComposeConnectionDetailsFactoryIntegrationTests.java b/spring-boot-project/spring-boot-mongodb/src/dockerTest/java/org/springframework/boot/mongodb/docker/compose/MongoDockerComposeConnectionDetailsFactoryIntegrationTests.java similarity index 97% rename from spring-boot-project/spring-boot-docker-compose-all/src/dockerTest/java/org/springframework/boot/docker/compose/service/connection/mongo/MongoDockerComposeConnectionDetailsFactoryIntegrationTests.java rename to spring-boot-project/spring-boot-mongodb/src/dockerTest/java/org/springframework/boot/mongodb/docker/compose/MongoDockerComposeConnectionDetailsFactoryIntegrationTests.java index 28695c4b2d..60e8d33bc3 100644 --- a/spring-boot-project/spring-boot-docker-compose-all/src/dockerTest/java/org/springframework/boot/docker/compose/service/connection/mongo/MongoDockerComposeConnectionDetailsFactoryIntegrationTests.java +++ b/spring-boot-project/spring-boot-mongodb/src/dockerTest/java/org/springframework/boot/mongodb/docker/compose/MongoDockerComposeConnectionDetailsFactoryIntegrationTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.docker.compose.service.connection.mongo; +package org.springframework.boot.mongodb.docker.compose; import com.mongodb.ConnectionString; import org.junit.jupiter.api.condition.OS; diff --git a/spring-boot-project/spring-boot-mongodb/src/dockerTest/resources/org/springframework/boot/mongodb/docker/compose/mongo-bitnami-compose.yaml b/spring-boot-project/spring-boot-mongodb/src/dockerTest/resources/org/springframework/boot/mongodb/docker/compose/mongo-bitnami-compose.yaml new file mode 100644 index 0000000000..1b2f92a858 --- /dev/null +++ b/spring-boot-project/spring-boot-mongodb/src/dockerTest/resources/org/springframework/boot/mongodb/docker/compose/mongo-bitnami-compose.yaml @@ -0,0 +1,9 @@ +services: + mongo: + image: '{imageName}' + ports: + - '27017' + environment: + - 'MONGODB_ROOT_USERNAME=root' + - 'MONGODB_ROOT_PASSWORD=secret' + - 'MONGODB_DATABASE=testdb' diff --git a/spring-boot-project/spring-boot-mongodb/src/dockerTest/resources/org/springframework/boot/mongodb/docker/compose/mongo-compose.yaml b/spring-boot-project/spring-boot-mongodb/src/dockerTest/resources/org/springframework/boot/mongodb/docker/compose/mongo-compose.yaml new file mode 100644 index 0000000000..135b54ec52 --- /dev/null +++ b/spring-boot-project/spring-boot-mongodb/src/dockerTest/resources/org/springframework/boot/mongodb/docker/compose/mongo-compose.yaml @@ -0,0 +1,9 @@ +services: + mongo: + image: '{imageName}' + ports: + - '27017' + environment: + MONGO_INITDB_ROOT_USERNAME: 'root' + MONGO_INITDB_ROOT_PASSWORD: 'secret' + MONGO_INITDB_DATABASE: 'mydatabase' diff --git a/spring-boot-project/spring-boot-docker-compose-all/src/main/java/org/springframework/boot/docker/compose/service/connection/mongo/MongoDockerComposeConnectionDetailsFactory.java b/spring-boot-project/spring-boot-mongodb/src/main/java/org/springframework/boot/mongodb/docker/compose/MongoDockerComposeConnectionDetailsFactory.java similarity index 97% rename from spring-boot-project/spring-boot-docker-compose-all/src/main/java/org/springframework/boot/docker/compose/service/connection/mongo/MongoDockerComposeConnectionDetailsFactory.java rename to spring-boot-project/spring-boot-mongodb/src/main/java/org/springframework/boot/mongodb/docker/compose/MongoDockerComposeConnectionDetailsFactory.java index 8a118551b9..0c8a793c2a 100644 --- a/spring-boot-project/spring-boot-docker-compose-all/src/main/java/org/springframework/boot/docker/compose/service/connection/mongo/MongoDockerComposeConnectionDetailsFactory.java +++ b/spring-boot-project/spring-boot-mongodb/src/main/java/org/springframework/boot/mongodb/docker/compose/MongoDockerComposeConnectionDetailsFactory.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.docker.compose.service.connection.mongo; +package org.springframework.boot.mongodb.docker.compose; import com.mongodb.ConnectionString; diff --git a/spring-boot-project/spring-boot-docker-compose-all/src/main/java/org/springframework/boot/docker/compose/service/connection/mongo/MongoEnvironment.java b/spring-boot-project/spring-boot-mongodb/src/main/java/org/springframework/boot/mongodb/docker/compose/MongoEnvironment.java similarity index 95% rename from spring-boot-project/spring-boot-docker-compose-all/src/main/java/org/springframework/boot/docker/compose/service/connection/mongo/MongoEnvironment.java rename to spring-boot-project/spring-boot-mongodb/src/main/java/org/springframework/boot/mongodb/docker/compose/MongoEnvironment.java index 1129d09cb1..b4222ec5b9 100644 --- a/spring-boot-project/spring-boot-docker-compose-all/src/main/java/org/springframework/boot/docker/compose/service/connection/mongo/MongoEnvironment.java +++ b/spring-boot-project/spring-boot-mongodb/src/main/java/org/springframework/boot/mongodb/docker/compose/MongoEnvironment.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.docker.compose.service.connection.mongo; +package org.springframework.boot.mongodb.docker.compose; import java.util.Map; diff --git a/spring-boot-project/spring-boot-docker-compose-all/src/main/java/org/springframework/boot/docker/compose/service/connection/mongo/package-info.java b/spring-boot-project/spring-boot-mongodb/src/main/java/org/springframework/boot/mongodb/docker/compose/package-info.java similarity index 81% rename from spring-boot-project/spring-boot-docker-compose-all/src/main/java/org/springframework/boot/docker/compose/service/connection/mongo/package-info.java rename to spring-boot-project/spring-boot-mongodb/src/main/java/org/springframework/boot/mongodb/docker/compose/package-info.java index bdb30b2bb1..a84bd315ff 100644 --- a/spring-boot-project/spring-boot-docker-compose-all/src/main/java/org/springframework/boot/docker/compose/service/connection/mongo/package-info.java +++ b/spring-boot-project/spring-boot-mongodb/src/main/java/org/springframework/boot/mongodb/docker/compose/package-info.java @@ -15,6 +15,6 @@ */ /** - * Auto-configuration for Docker Compose MongoDB service connections. + * Support for Docker Compose MongoDB service connections. */ -package org.springframework.boot.docker.compose.service.connection.mongo; +package org.springframework.boot.mongodb.docker.compose; diff --git a/spring-boot-project/spring-boot-mongodb/src/main/resources/META-INF/spring.factories b/spring-boot-project/spring-boot-mongodb/src/main/resources/META-INF/spring.factories index d29c36f035..a4e490f795 100644 --- a/spring-boot-project/spring-boot-mongodb/src/main/resources/META-INF/spring.factories +++ b/spring-boot-project/spring-boot-mongodb/src/main/resources/META-INF/spring.factories @@ -1,3 +1,4 @@ # Connection Details Factories org.springframework.boot.autoconfigure.service.connection.ConnectionDetailsFactory=\ +org.springframework.boot.mongodb.docker.compose.MongoDockerComposeConnectionDetailsFactory,\ org.springframework.boot.mongodb.testcontainers.MongoContainerConnectionDetailsFactory diff --git a/spring-boot-project/spring-boot-docker-compose-all/src/test/java/org/springframework/boot/docker/compose/service/connection/mongo/MongoEnvironmentTests.java b/spring-boot-project/spring-boot-mongodb/src/test/java/org/springframework/boot/mongodb/docker/compose/MongoEnvironmentTests.java similarity index 97% rename from spring-boot-project/spring-boot-docker-compose-all/src/test/java/org/springframework/boot/docker/compose/service/connection/mongo/MongoEnvironmentTests.java rename to spring-boot-project/spring-boot-mongodb/src/test/java/org/springframework/boot/mongodb/docker/compose/MongoEnvironmentTests.java index 825ce5e31a..9db855cf7c 100644 --- a/spring-boot-project/spring-boot-docker-compose-all/src/test/java/org/springframework/boot/docker/compose/service/connection/mongo/MongoEnvironmentTests.java +++ b/spring-boot-project/spring-boot-mongodb/src/test/java/org/springframework/boot/mongodb/docker/compose/MongoEnvironmentTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.docker.compose.service.connection.mongo; +package org.springframework.boot.mongodb.docker.compose; import java.util.Collections; import java.util.Map;