Skip to content

Local Docker Compose with V2 Not Found in Path Error #278

@joesan

Description

@joesan

I'm having a Scala project where in the test folder, I have the resources folder and in that folder I have the docker-compose-mqtt.yaml file that is supposed to start a mqtt broker as a docker container. I have a test class like this below:

class MqttClientFactoryTest extends AsyncFunSuite
    with Matchers with TestContainersForAll {

  implicit val ec: scala.concurrent.ExecutionContext = scala.concurrent.ExecutionContext.global

  override type Containers = DockerComposeContainer

  override def startContainers(): DockerComposeContainer = {
    DockerComposeContainer
      .Def(
        composeFiles = new File(
          this.getClass.getClassLoader
            .getResource("docker-compose-mqtt.yaml")
            .getFile
        ),
        exposedServices = Seq(ExposedService(name = "mqtt5", port = 1883))
      )
      .start()
  }

  test("mosquitto container") {
    withContainers { container =>
      val client: Mqtt5AsyncClient = Mqtt5Client
        .builder()
        .identifier(UUID.randomUUID().toString)
        .serverHost("broker.hivemq.com")
        .buildAsync()

      client
        .connect()
        .thenCompose(_ =>
          client
            .publishWith()
            .topic("test/topic")
            .payload("some random message!!!".getBytes)
            .send()
        )
        .asScala
        .map(_ => 1 should be(1))

      client
        .subscribeWith()
        .topicFilter("test/topic")
        .qos(MqttQos.EXACTLY_ONCE)
        .callback(x => println(new String(x.getPayloadAsBytes)))
        .send()
        .asScala
        .map(_ => 1 should be(1))
    }
  }
}

When I ran it, it failed with the message below:

Exception encountered when invoking run on a nested suite - Local Docker Compose not found. Is docker-compose on the PATH?

org.testcontainers.containers.ContainerLaunchException: Local Docker Compose not found. Is docker-compose on the PATH?
	at org.testcontainers.containers.LocalDockerCompose.invoke(LocalDockerCompose.java:61)
	at org.testcontainers.containers.ComposeDelegate.runWithCompose(ComposeDelegate.java:254)
	at org.testcontainers.containers.ComposeDelegate.createServices(ComposeDelegate.java:163)
	at org.testcontainers.containers.DockerComposeContainer.start(DockerComposeContainer.java:137)
	at com.dimafeng.testcontainers.DockerComposeContainer.start(DockerComposeContainer.scala:185)
	at com.dimafeng.testcontainers.ContainerDef.start(ContainerDef.scala:14)
	at com.dimafeng.testcontainers.ContainerDef.start$(ContainerDef.scala:12)
	at com.dimafeng.testcontainers.DockerComposeContainer$Def.start(DockerComposeContainer.scala:88)
	at com.openelectrons.ocpp.gateway.mqtt.MqttClientFactoryTest.startContainers(MqttClientFactoryTest.scala:25)
What is the desired approach here to run this as a unit test?

Activity

joesan

joesan commented on Mar 26, 2024

@joesan
Author

It is looking for the older docker-compose as it can be seen from the screenshot below:

image

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

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Development

      No branches or pull requests

        Participants

        @joesan

        Issue actions

          Local Docker Compose with V2 Not Found in Path Error · Issue #278 · testcontainers/testcontainers-scala