diff --git a/core/src/main/java/org/testcontainers/containers/DockerComposeContainer.java b/core/src/main/java/org/testcontainers/containers/DockerComposeContainer.java index 14124d88c28..683e9d9fdf5 100644 --- a/core/src/main/java/org/testcontainers/containers/DockerComposeContainer.java +++ b/core/src/main/java/org/testcontainers/containers/DockerComposeContainer.java @@ -611,7 +611,8 @@ public SELF withStartupTimeout(Duration startupTimeout) { } public Optional getContainerByServiceName(String serviceName) { - return Optional.ofNullable(serviceInstanceMap.get(serviceName)); + String serviceInstantName = getServiceInstanceName(serviceName); + return Optional.ofNullable(serviceInstanceMap.get(serviceInstantName)); } private void followLogs(String containerId, Consumer consumer) { diff --git a/core/src/test/java/org/testcontainers/junit/DockerComposeContainerTest.java b/core/src/test/java/org/testcontainers/junit/DockerComposeContainerTest.java index c610fc584af..96989af90a4 100644 --- a/core/src/test/java/org/testcontainers/junit/DockerComposeContainerTest.java +++ b/core/src/test/java/org/testcontainers/junit/DockerComposeContainerTest.java @@ -44,6 +44,7 @@ public void testGetServicePort() { public void shouldRetrieveContainerByServiceName() { String existingServiceName = "db_1"; Optional result = environment.getContainerByServiceName(existingServiceName); + assertThat(result) .as(String.format("Container should be found by service name %s", existingServiceName)) .isPresent(); @@ -52,6 +53,19 @@ public void shouldRetrieveContainerByServiceName() { .isEqualTo(result.get().getExposedPorts()); } + @Test + public void shouldRetrieveContainerByServiceNameWithoutNumberedSuffix() { + String existingServiceName = "db"; + Optional result = environment.getContainerByServiceName(existingServiceName); + + assertThat(result) + .as(String.format("Container should be found by service name %s", existingServiceName)) + .isPresent(); + assertThat(result.get().getExposedPorts()) + .as("Mapped port for result container was wrong, perhaps wrong container was found") + .isEqualTo(Collections.singletonList(3306)); + } + @Test public void shouldReturnEmptyResultOnNoneExistingService() { String notExistingServiceName = "db_256";