From b134a8d7eaf044a5d629e63236bb591e27482b96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Edd=C3=BA=20Mel=C3=A9ndez?= Date: Tue, 18 Jun 2024 19:31:10 -0500 Subject: [PATCH] Add support for redis/redis-stack image in Docker Compose Currently, `redis/redis-stack-server` image is supported. This commit introduces support for `redis/redis-stack`, which also contains Redis Insight. --- .../ROOT/pages/api/docker-compose.adoc | 2 +- ...DockerComposeConnectionDetailsFactory.java | 4 +- ...rComposeConnectionDetailsFactoryTests.java | 37 +++++++++++++++++++ ...ComposeConnectionDetailsFactoryTests.java} | 4 +- 4 files changed, 43 insertions(+), 4 deletions(-) create mode 100644 spring-ai-spring-boot-docker-compose/src/test/java/org/springframework/ai/docker/compose/service/connection/redis/RedisStackDockerComposeConnectionDetailsFactoryTests.java rename spring-ai-spring-boot-docker-compose/src/test/java/org/springframework/ai/docker/compose/service/connection/redis/{RedisDockerComposeConnectionDetailsFactoryTests.java => RedisStackServerDockerComposeConnectionDetailsFactoryTests.java} (88%) diff --git a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/docker-compose.adoc b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/docker-compose.adoc index 7d42f7942..7d19d0eda 100644 --- a/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/docker-compose.adoc +++ b/spring-ai-docs/src/main/antora/modules/ROOT/pages/api/docker-compose.adoc @@ -41,7 +41,7 @@ The following service connection factories are provided in the `spring-ai-spring | Containers named `qdrant/qdrant` | `RedisConnectionDetails` -| Containers named `redis/redis-stack-server` +| Containers named `redis/redis-stack-server`, `redis/redis-stack` | `TypesenseConnectionDetails` | Containers named `typesense/typesense` diff --git a/spring-ai-spring-boot-docker-compose/src/main/java/org/springframework/ai/docker/compose/service/connection/redis/RedisDockerComposeConnectionDetailsFactory.java b/spring-ai-spring-boot-docker-compose/src/main/java/org/springframework/ai/docker/compose/service/connection/redis/RedisDockerComposeConnectionDetailsFactory.java index 2c092c9d0..5b619ea8b 100644 --- a/spring-ai-spring-boot-docker-compose/src/main/java/org/springframework/ai/docker/compose/service/connection/redis/RedisDockerComposeConnectionDetailsFactory.java +++ b/spring-ai-spring-boot-docker-compose/src/main/java/org/springframework/ai/docker/compose/service/connection/redis/RedisDockerComposeConnectionDetailsFactory.java @@ -26,10 +26,12 @@ import org.springframework.boot.docker.compose.service.connection.DockerComposeC public class RedisDockerComposeConnectionDetailsFactory extends DockerComposeConnectionDetailsFactory { + private static final String[] REDIS_IMAGE_NAMES = { "redis/redis-stack", "redis/redis-stack-server" }; + private static final int REDIS_PORT = 6379; protected RedisDockerComposeConnectionDetailsFactory() { - super("redis/redis-stack-server"); + super(REDIS_IMAGE_NAMES); } @Override diff --git a/spring-ai-spring-boot-docker-compose/src/test/java/org/springframework/ai/docker/compose/service/connection/redis/RedisStackDockerComposeConnectionDetailsFactoryTests.java b/spring-ai-spring-boot-docker-compose/src/test/java/org/springframework/ai/docker/compose/service/connection/redis/RedisStackDockerComposeConnectionDetailsFactoryTests.java new file mode 100644 index 000000000..70ef16c29 --- /dev/null +++ b/spring-ai-spring-boot-docker-compose/src/test/java/org/springframework/ai/docker/compose/service/connection/redis/RedisStackDockerComposeConnectionDetailsFactoryTests.java @@ -0,0 +1,37 @@ +/* + * Copyright 2023 - 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.ai.docker.compose.service.connection.redis; + +import org.junit.jupiter.api.Test; +import org.springframework.ai.autoconfigure.vectorstore.redis.RedisConnectionDetails; +import org.springframework.boot.docker.compose.service.connection.test.AbstractDockerComposeIntegrationTests; +import org.testcontainers.utility.DockerImageName; + +import static org.assertj.core.api.Assertions.assertThat; + +class RedisStackDockerComposeConnectionDetailsFactoryTests extends AbstractDockerComposeIntegrationTests { + + RedisStackDockerComposeConnectionDetailsFactoryTests() { + super("redis-compose.yaml", DockerImageName.parse("redis/redis-stack")); + } + + @Test + void runCreatesConnectionDetails() { + RedisConnectionDetails connectionDetails = run(RedisConnectionDetails.class); + assertThat(connectionDetails.getUri()).startsWith("redis://"); + } + +} diff --git a/spring-ai-spring-boot-docker-compose/src/test/java/org/springframework/ai/docker/compose/service/connection/redis/RedisDockerComposeConnectionDetailsFactoryTests.java b/spring-ai-spring-boot-docker-compose/src/test/java/org/springframework/ai/docker/compose/service/connection/redis/RedisStackServerDockerComposeConnectionDetailsFactoryTests.java similarity index 88% rename from spring-ai-spring-boot-docker-compose/src/test/java/org/springframework/ai/docker/compose/service/connection/redis/RedisDockerComposeConnectionDetailsFactoryTests.java rename to spring-ai-spring-boot-docker-compose/src/test/java/org/springframework/ai/docker/compose/service/connection/redis/RedisStackServerDockerComposeConnectionDetailsFactoryTests.java index 71566b262..c7df8a8c7 100644 --- a/spring-ai-spring-boot-docker-compose/src/test/java/org/springframework/ai/docker/compose/service/connection/redis/RedisDockerComposeConnectionDetailsFactoryTests.java +++ b/spring-ai-spring-boot-docker-compose/src/test/java/org/springframework/ai/docker/compose/service/connection/redis/RedisStackServerDockerComposeConnectionDetailsFactoryTests.java @@ -22,9 +22,9 @@ import org.testcontainers.utility.DockerImageName; import static org.assertj.core.api.Assertions.assertThat; -class RedisDockerComposeConnectionDetailsFactoryTests extends AbstractDockerComposeIntegrationTests { +class RedisStackServerDockerComposeConnectionDetailsFactoryTests extends AbstractDockerComposeIntegrationTests { - RedisDockerComposeConnectionDetailsFactoryTests() { + RedisStackServerDockerComposeConnectionDetailsFactoryTests() { super("redis-compose.yaml", DockerImageName.parse("redis/redis-stack-server")); }