Skip to content

DockerComposeContainer doesn't seem to work #439

@arcuri82

Description

@arcuri82

Hi,
I am trying to run DockerComposeContainer from a JUnit test, but it doesn't work. The application itself seems fine, as I can run it with no problem from command line:

docker-compose up

I set up DockerComposeContainer in my test with (in Kotlin):

companion object {

        class KDockerComposeContainer(path: File) : DockerComposeContainer<KDockerComposeContainer>(path)

        @ClassRule @JvmField
        val env = KDockerComposeContainer(File("../docker-compose.yml"))
    }

The test fails at initialization, with the following stack trace that does not really say much about what is wrong:

Connected to the target VM, address: '127.0.0.1:53858', transport: 'socket'
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
        ℹ︎ Checking the system...
        ✔ Docker version is newer than 1.6.0
        ✔ Docker environment has more than 2GB free
        ✔ File should be mountable
        ✔ Exposed port is accessible

Test ignored.

org.testcontainers.containers.ContainerLaunchException: Container startup failed

	at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:189)
	at org.testcontainers.containers.ContainerisedDockerCompose.invoke(DockerComposeContainer.java:431)
	at org.testcontainers.containers.DockerComposeContainer.runWithCompose(DockerComposeContainer.java:151)
	at org.testcontainers.containers.DockerComposeContainer.pullImages(DockerComposeContainer.java:121)
	at org.testcontainers.containers.DockerComposeContainer.starting(DockerComposeContainer.java:108)
	at org.testcontainers.containers.FailureDetectingExternalResource$1.evaluate(FailureDetectingExternalResource.java:29)
	at org.junit.rules.RunRules.evaluate(RunRules.java:20)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
	at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:51)
	at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
	at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception
	at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:83)
	at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:182)
	... 12 more
Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container
	at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:256)
	at org.testcontainers.containers.GenericContainer.lambda$start$0(GenericContainer.java:184)
	at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:76)
	... 13 more
Caused by: java.lang.IllegalStateException: Container did not start correctly.
	at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:231)
	... 15 more

By using a debugger, I can see it fails to start docker/compose:1.8.0. Note: I am using Windows 10, with Docker version 17.06.0-ce-win18 (12627), and TestContainers 1.4.2. TestContainers work fines in the other tests in which I have single Docker images (i.e., no Compose).

Is this a bug, or am I missing something? (In this latter case, more info in the thrown exceptions would be useful)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions