lucek091
lucek091

Reputation: 71

Dockerfile testcontainers Can not connect to Ryuk

I try to dockerize my java spring application.

In my build.gradle

implementation 'org.testcontainers:junit-jupiter'
implementation 'org.testcontainers:postgresql'

In my test file:

@SpringBootTest
class ApplicationTests {

@ClassRule
public static PostgreSQLContainer postgreSQLContainer = new PostgreSQLContainer("postgres:11.1")
    .withDatabaseName("integration-tests-db")
    .withUsername("sa")
    .withPassword("sa");

static class Initializer
    implements ApplicationContextInitializer<ConfigurableApplicationContext> {
    public void initialize(ConfigurableApplicationContext configurableApplicationContext) {
        TestPropertyValues.of(
            "spring.datasource.url=" + postgreSQLContainer.getJdbcUrl(),
            "spring.datasource.username=" + postgreSQLContainer.getUsername(),
            "spring.datasource.password=" + postgreSQLContainer.getPassword()
        ).applyTo(configurableApplicationContext.getEnvironment());
    }
}

}

Dockerfile:

FROM adoptopenjdk/openjdk16:jdk-16.0.2_7-alpine-slim
MAINTAINER myapplication

ARG JAR_FILE=build/libs/myapplication-0.0.1-SNAPSHOT.jar

COPY ${JAR_FILE} myapplication-0.0.1-SNAPSHOT.jar
ENTRYPOINT ["java","-jar","/myapplication-0.0.1-SNAPSHOT.jar"]

then from terminal I run:

docker build --no-cache  --tag=myapplication:latest .

docker run -v /var/run/docker.sock:/var/run/docker.sock -p8080:8080 myapplication:latest

And after all I see an error:

2021-10-24 09:12:25.781 WARN [,,] 1 --- [containers-ryuk] o.testcontainers.utility.ResourceReaper : Can not connect to Ryuk at 172.17.0.1:50582

java.net.ConnectException: Connection refused at java.base/sun.nio.ch.Net.pollConnect(Native Method) ~[na:na] at java.base/sun.nio.ch.Net.pollConnectNow(Net.java:669) ~[na:na] at java.base/sun.nio.ch.NioSocketImpl.timedFinishConnect(NioSocketImpl.java:542) ~[na:na] at java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:597) ~[na:na] at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:333) ~[na:na] at java.base/java.net.Socket.connect(Socket.java:645) ~[na:na] at org.testcontainers.utility.ResourceReaper.lambda$null$1(ResourceReaper.java:189) ~[testcontainers-1.16.0.jar!/:na] at org.rnorth.ducttape.ratelimits.RateLimiter.doWhenReady(RateLimiter.java:27) ~[duct-tape-1.0.8.jar!/:na] at org.testcontainers.utility.ResourceReaper.lambda$start$2(ResourceReaper.java:185) ~[testcontainers-1.16.0.jar!/:na] at java.base/java.lang.Thread.run(Thread.java:831) ~[na:na]

What am I doing wrong? Unfortunately, after two days of struggling, I have run out of ideas.

btw: I disabled Use gRPC FUSE for file sharing from Docker and didn't help. I use macos.

Upvotes: 3

Views: 5280

Answers (2)

Tim Sims
Tim Sims

Reputation: 165

add -e TESTCONTAINERS_HOST_OVERRIDE=docker.for.mac.host.internal after your run command

docker run -e TESTCONTAINERS_HOST_OVERRIDE=docker.for.mac.host.internal ...

Upvotes: 9

Semyon Kirekov
Semyon Kirekov

Reputation: 1442

According to Testcontainers docs the WORKDIR should have the same absolute path as the OS launching point. Try to add these configs

docker run -v /var/run/docker.sock:/var/run/docker.sock \
           -p 8080:8080 \
           -v $PWD:$PWD \
           -w $PWD \
            myapplication:latest

Upvotes: 0

Related Questions