Skip to content

[Bug]: Unable to setup container for the image bitnami/redis:7.4.2 #10001

@SivaGurijala79

Description

@SivaGurijala79

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:        de40ad0

What 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 more

Additional Information

image link : https://hub.docker.com/r/bitnami/redis

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions