Skip to content

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

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 java.base@21.0.6/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 java.base@21.0.6/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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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