diff --git a/core/src/main/java/org/testcontainers/containers/DockerComposeContainer.java b/core/src/main/java/org/testcontainers/containers/DockerComposeContainer.java index 31d84284584..7dec6399b8f 100644 --- a/core/src/main/java/org/testcontainers/containers/DockerComposeContainer.java +++ b/core/src/main/java/org/testcontainers/containers/DockerComposeContainer.java @@ -385,7 +385,15 @@ public String getServiceHost(String serviceName, Integer servicePort) { * @return a port that can be used for accessing the service container. */ public Integer getServicePort(String serviceName, Integer servicePort) { - return ambassadorContainer.getMappedPort(ambassadorPortMappings.get(getServiceInstanceName(serviceName)).get(servicePort)); + Map portMap = ambassadorPortMappings.get(getServiceInstanceName(serviceName)); + + if (portMap == null) { + throw new IllegalArgumentException("Could not get a port for '" + serviceName + "'. " + + "Testcontainers does not have an exposed port configured for '" + serviceName + "'. "+ + "To fix, please ensure that the service '" + serviceName + "' has ports exposed using .withExposedService(...)"); + } else { + return ambassadorContainer.getMappedPort(portMap.get(servicePort)); + } } public SELF withScaledService(String serviceBaseName, int numInstances) { diff --git a/core/src/test/java/org/testcontainers/junit/DockerComposeServiceTest.java b/core/src/test/java/org/testcontainers/junit/DockerComposeServiceTest.java index c0360050d27..ec8c50d42ab 100644 --- a/core/src/test/java/org/testcontainers/junit/DockerComposeServiceTest.java +++ b/core/src/test/java/org/testcontainers/junit/DockerComposeServiceTest.java @@ -21,7 +21,7 @@ protected DockerComposeContainer getEnvironment() { return environment; } - @Test(expected = NullPointerException.class) + @Test(expected = IllegalArgumentException.class) public void testDbIsNotStarting() { environment.getServicePort("db_1", 10001); }