-
-
Notifications
You must be signed in to change notification settings - Fork 1.8k
Description
Module
Core
Testcontainers version
1.17.2
Using the latest Testcontainers version?
Yes
Host OS
Mac
Host Arch
2.6 GHz 6-Core Intel Core i7 (x86_64)
Docker version
Client: Docker Engine - Community
Version: 27.1.2
API version: 1.46
Go version: go1.22.6
Git commit: d01f264bcc
Built: Mon Aug 12 11:34:32 2024
OS/Arch: darwin/amd64
Context: default
Server: Docker Engine - Community
Engine:
Version: 27.1.1
API version: 1.46 (minimum version 1.24)
Go version: go1.21.12
Git commit: cc13f95
Built: Tue Jul 23 19:57:14 2024
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.7.19
GitCommit: 2bf793ef6dc9a18e00cb12efb64355c2c9d5eb41
runc:
Version: 1.7.19
GitCommit: v1.1.13-0-g58aa920
docker-init:
Version: 0.19.0
GitCommit: de40ad0What happened?
I am trying to setup a redis container with SSL. Since official redis image is not having the ssl support, i am using bitnami/redis:7.4.2 image.
I am using Java 21, Springboot: 3.4.2 version
i generated self signed openssl certificates and using them.
I am able to run the conatiner manually with following command and can interact with same using below springboot props
spring.data.redis.host=localhost
spring.data.redis.port=6380
spring.data.redis.password=redis
spring.data.redis.ssl.enabled=true
and disabled the peerverificationfrom springboot app. Local run of springboot application is workign fine.
When i am tryign to setup the container for integration tests using test containers using following code i am running into issue.
int PORT = 6380;
String REDIS_IMAGE_NAME = "bitnami/redis:7.4.2";
String SPRING_REDIS_HOST = "spring.data.redis.host";
String SPRING_REDIS_PORT = "spring.data.redis.port";
@container
GenericContainer<?> redisContainer =
new GenericContainer(DockerImageName.parse(REDIS_IMAGE_NAME)).withExposedPorts(PORT)
.withCopyFileToContainer(
MountableFile.forClasspathResource("redis-certs/redis.crt"), "/certs/redis.crt")
.withCopyFileToContainer(
MountableFile.forClasspathResource("redis-certs/redis.key"), "/certs/redis.key")
.withCopyFileToContainer(
MountableFile.forClasspathResource("redis-certs/ca.crt"), "/certs/ca.crt")
.withCopyFileToContainer(
MountableFile.forClasspathResource("redis-certs/redis.dh"), "/certs/redis.dh")
.withEnv("REDIS_PASSWORD", "redis")
.withEnv("REDIS_TLS_ENABLE", "yes")
.withEnv("REDIS_TLS_AUTH_CLIENTS", "no")
.withEnv("REDIS_TLS_PORT", "6380")
.withEnv("REDIS_TLS_CERT_FILE", "/certs/redis.crt")
.withEnv("REDIS_TLS_KEY_FILE", "/certs/redis.key")
.withEnv("REDIS_TLS_CA_FILE", "/certs/ca.crt")
.withEnv("REDIS_TLS_DH_PARAMS_FILE", "/certs/redis.dh");
Kindly help me to setup the redis container with ssl support for integration tests in springboot app.
Relevant log output
Container startup failed for image bitnami/redis:7.4.2
org.testcontainers.containers.ContainerLaunchException: Container startup failed for image bitnami/redis:7.4.2
at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:351)
at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:322)
at org.testcontainers.junit.jupiter.TestcontainersExtension$StoreAdapter.start(TestcontainersExtension.java:276)
at org.testcontainers.junit.jupiter.TestcontainersExtension$StoreAdapter.access$200(TestcontainersExtension.java:263)
at org.testcontainers.junit.jupiter.TestcontainersExtension.lambda$null$4(TestcontainersExtension.java:83)
at org.testcontainers.junit.jupiter.TestcontainersExtension.lambda$startContainers$5(TestcontainersExtension.java:83)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
at org.testcontainers.junit.jupiter.TestcontainersExtension.startContainers(TestcontainersExtension.java:83)
at org.testcontainers.junit.jupiter.TestcontainersExtension.beforeAll(TestcontainersExtension.java:57)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception
at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)
at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:336)
... 9 more
Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container
at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:556)
at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:346)
at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)
... 10 more
Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for container port to open (192.168.106.2 ports: [32799] should be listening)
at org.testcontainers.containers.wait.strategy.HostPortWaitStrategy.waitUntilReady(HostPortWaitStrategy.java:112)
at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)
at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:909)
at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:492)
... 12 more
Retry limit hit with exception
org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception
at app//org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)
at app//org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:336)
at app//org.testcontainers.containers.GenericContainer.start(GenericContainer.java:322)
at app//org.testcontainers.junit.jupiter.TestcontainersExtension$StoreAdapter.start(TestcontainersExtension.java:276)
at app//org.testcontainers.junit.jupiter.TestcontainersExtension$StoreAdapter.access$200(TestcontainersExtension.java:263)
at app//org.testcontainers.junit.jupiter.TestcontainersExtension.lambda$null$4(TestcontainersExtension.java:83)
at app//org.testcontainers.junit.jupiter.TestcontainersExtension.lambda$startContainers$5(TestcontainersExtension.java:83)
at [email protected]/java.util.ArrayList.forEach(ArrayList.java:1596)
at app//org.testcontainers.junit.jupiter.TestcontainersExtension.startContainers(TestcontainersExtension.java:83)
at app//org.testcontainers.junit.jupiter.TestcontainersExtension.beforeAll(TestcontainersExtension.java:57)
at [email protected]/java.util.ArrayList.forEach(ArrayList.java:1596)
Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container
at app//org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:556)
at app//org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:346)
at app//org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)
... 10 more
Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for container port to open (192.168.106.2 ports: [32799] should be listening)
at app//org.testcontainers.containers.wait.strategy.HostPortWaitStrategy.waitUntilReady(HostPortWaitStrategy.java:112)
at app//org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)
at app//org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:909)
at app//org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:492)
... 12 moreAdditional Information
image link : https://hub.docker.com/r/bitnami/redis