Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Testcontainer cannot configure port binding

I'm using testcontainer version 1.15.2. Tests are run in intellij on windows 10. I have a wiremock container. By default it listens on the port 8080. I would like to map this port to let's say 8081. So I do:

public WiremockContainer() {
    super("wiremock/wiremock:2.9.0-alpine");

    self()
            .waitingFor(Wait.forLogMessage(".*port:\\s*8080.*", 1)
                    .withStartupTimeout(Duration.ofSeconds(25L)))
            .withCreateContainerCmdModifier(cmd -> cmd.getHostConfig()
                    .withPortBindings(new PortBinding(Ports.Binding.bindPort(8081), new ExposedPort(8080)))
            )
            .withNetworkAliases("wiremock")
            .withExposedPorts(8081);
}

When the container is created it listens on the random port, not the 8081[1]. What am I doing wrong ? What should I do to make the container listen on 8081 instead of the random port ?

[1]

  1. I have another container that tries to connect on http://wiremock:8081 and keep getting Connection refused
  2. When I add: .waitingFor((...)forPort(8081)(...))); timeout occurs.
like image 567
Filip Kowalski Avatar asked Dec 06 '25 16:12

Filip Kowalski


1 Answers

You can use set port bindings

List<String> portBindings = new ArrayList<>();
portBindings.add("5673:5672"); // hostPort:containerPort
portBindings.add("15673:15672"); // hostPort:containerPort
container.setPortBindings(portBindings);
like image 57
jatorna Avatar answered Dec 08 '25 09:12

jatorna