diff --git a/spring-boot-project/spring-boot-docker-compose/src/main/java/org/springframework/boot/docker/compose/core/DefaultDockerCompose.java b/spring-boot-project/spring-boot-docker-compose/src/main/java/org/springframework/boot/docker/compose/core/DefaultDockerCompose.java index 0354867450c..c969cf44058 100644 --- a/spring-boot-project/spring-boot-docker-compose/src/main/java/org/springframework/boot/docker/compose/core/DefaultDockerCompose.java +++ b/spring-boot-project/spring-boot-docker-compose/src/main/java/org/springframework/boot/docker/compose/core/DefaultDockerCompose.java @@ -69,11 +69,6 @@ class DefaultDockerCompose implements DockerCompose { return !this.cli.run(new DockerCliCommand.ComposeConfig()).services().isEmpty(); } - @Override - public boolean hasRunningServices() { - return runComposePs().stream().anyMatch(this::isRunning); - } - @Override public List getRunningServices() { List runningPsResponses = runComposePs().stream().filter(this::isRunning).toList(); diff --git a/spring-boot-project/spring-boot-docker-compose/src/main/java/org/springframework/boot/docker/compose/core/DockerCompose.java b/spring-boot-project/spring-boot-docker-compose/src/main/java/org/springframework/boot/docker/compose/core/DockerCompose.java index 32767cccf62..de27b8298c7 100644 --- a/spring-boot-project/spring-boot-docker-compose/src/main/java/org/springframework/boot/docker/compose/core/DockerCompose.java +++ b/spring-boot-project/spring-boot-docker-compose/src/main/java/org/springframework/boot/docker/compose/core/DockerCompose.java @@ -73,15 +73,6 @@ public interface DockerCompose { */ boolean hasDefinedServices(); - /** - * Return if services defined in the {@link DockerComposeFile} for the active profile - * are running. - * @return {@code true} if services are running - * @see #hasDefinedServices() - * @see #getRunningServices() - */ - boolean hasRunningServices(); - /** * Return the running services for the active profile, or an empty list if no services * are running. diff --git a/spring-boot-project/spring-boot-docker-compose/src/main/java/org/springframework/boot/docker/compose/lifecycle/DockerComposeLifecycleManager.java b/spring-boot-project/spring-boot-docker-compose/src/main/java/org/springframework/boot/docker/compose/lifecycle/DockerComposeLifecycleManager.java index e04ad34e4fe..a5db6838867 100644 --- a/spring-boot-project/spring-boot-docker-compose/src/main/java/org/springframework/boot/docker/compose/lifecycle/DockerComposeLifecycleManager.java +++ b/spring-boot-project/spring-boot-docker-compose/src/main/java/org/springframework/boot/docker/compose/lifecycle/DockerComposeLifecycleManager.java @@ -112,19 +112,21 @@ class DockerComposeLifecycleManager { Start start = this.properties.getStart(); Stop stop = this.properties.getStop(); Wait wait = this.properties.getReadiness().getWait(); - if (lifecycleManagement.shouldStart() && !dockerCompose.hasRunningServices()) { + List runningServices = dockerCompose.getRunningServices(); + if (lifecycleManagement.shouldStart() && runningServices.isEmpty()) { start.getCommand().applyTo(dockerCompose, start.getLogLevel()); + runningServices = dockerCompose.getRunningServices(); wait = (wait != Wait.ONLY_IF_STARTED) ? wait : Wait.ALWAYS; if (lifecycleManagement.shouldStop()) { this.shutdownHandlers.add(() -> stop.getCommand().applyTo(dockerCompose, stop.getTimeout())); } } - List runningServices = new ArrayList<>(dockerCompose.getRunningServices()); - runningServices.removeIf(this::isIgnored); + List relevantServices = new ArrayList<>(runningServices); + relevantServices.removeIf(this::isIgnored); if (wait == Wait.ALWAYS || wait == null) { - this.serviceReadinessChecks.waitUntilReady(runningServices); + this.serviceReadinessChecks.waitUntilReady(relevantServices); } - publishEvent(new DockerComposeServicesReadyEvent(this.applicationContext, runningServices)); + publishEvent(new DockerComposeServicesReadyEvent(this.applicationContext, relevantServices)); } protected DockerComposeFile getComposeFile() { diff --git a/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/core/DefaultDockerComposeTests.java b/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/core/DefaultDockerComposeTests.java index d048eeb962a..c6c297d3a9b 100644 --- a/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/core/DefaultDockerComposeTests.java +++ b/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/core/DefaultDockerComposeTests.java @@ -96,26 +96,6 @@ class DefaultDockerComposeTests { assertThat(compose.hasDefinedServices()).isTrue(); } - @Test - void hasRunningServicesWhenPsListsRunningServiceReturnsTrue() { - willReturn(List.of(new DockerCliComposePsResponse("id", "name", "image", "exited"), - new DockerCliComposePsResponse("id", "name", "image", "running"))) - .given(this.cli) - .run(new DockerCliCommand.ComposePs()); - DefaultDockerCompose compose = new DefaultDockerCompose(this.cli, HOST); - assertThat(compose.hasRunningServices()).isTrue(); - } - - @Test - void hasRunningServicesWhenPsListReturnsAllExitedReturnsFalse() { - willReturn(List.of(new DockerCliComposePsResponse("id", "name", "image", "exited"), - new DockerCliComposePsResponse("id", "name", "image", "running"))) - .given(this.cli) - .run(new DockerCliCommand.ComposePs()); - DefaultDockerCompose compose = new DefaultDockerCompose(this.cli, HOST); - assertThat(compose.hasRunningServices()).isTrue(); - } - @Test void getRunningServicesReturnsServices() { String id = "123"; diff --git a/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/lifecycle/DockerComposeLifecycleManagerTests.java b/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/lifecycle/DockerComposeLifecycleManagerTests.java index 943e172e67d..72d3dcbceda 100644 --- a/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/lifecycle/DockerComposeLifecycleManagerTests.java +++ b/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/lifecycle/DockerComposeLifecycleManagerTests.java @@ -351,7 +351,6 @@ class DockerComposeLifecycleManagerTests { @SuppressWarnings("unchecked") private void setUpRunningServices(boolean started, Map labels) { given(this.dockerCompose.hasDefinedServices()).willReturn(true); - given(this.dockerCompose.hasRunningServices()).willReturn(true); RunningService runningService = mock(RunningService.class); given(runningService.labels()).willReturn(labels); this.runningServices = List.of(runningService);