Dear developer.

I'm having a problem using spring-boot-docker-compose. The official documentation for the introduction of this feature is very brief, not even example.

spring config

spring:
  docker:
    compose:
      enabled: true
      host: 192.168.119.128
      readiness:
        timeout: 1m
      lifecycle-management: start_and_stop
      start:
        command: start
      stop:
        command: down
        timeout: 1m
      file: ./yy-ordering.yaml

docker compose

version: '3.8'
services:
  auth:
    build: .
    ports:
      - "8000:8000"
    container_name: test_auth
    labels:
      org.springframework.boot.readiness-check.tcp.disable: true

docker file

FROM openjdk:17-slim
LABEL authors="Licon"

MAINTAINER Licon

RUN mkdir -p /usr/app/yy_ordering

WORKDIR /usr/app/yy_ordering

COPY ../../../target/yy-auth-1.0.jar /usr/app/yy_ordering/yy-auth-1.0.jar

RUN chmod -x /usr/app/yy_ordering/yy-auth-1.0.jar

ENV SERVER_PORT=8000

ENTRYPOINT ["java",\
            "-Dserver.port=${SERVER_PORT}",\
            "-jar","yy-auth-1.0.jar"]
EXPOSE ${SERVER_PORT}

start up exception

org.springframework.boot.docker.compose.core.DockerProcessStartException: Unable to start docker process. Is docker correctly installed?
    at org.springframework.boot.docker.compose.core.DockerCli$DockerCommands.getDockerCommand(DockerCli.java:140) ~[spring-boot-docker-compose-3.1.0.jar:3.1.0]
    at org.springframework.boot.docker.compose.core.DockerCli$DockerCommands.<init>(DockerCli.java:129) ~[spring-boot-docker-compose-3.1.0.jar:3.1.0]
    at org.springframework.boot.docker.compose.core.DockerCli.lambda$new$0(DockerCli.java:65) ~[spring-boot-docker-compose-3.1.0.jar:3.1.0]
    at java.base/java.util.HashMap.computeIfAbsent(HashMap.java:1220) ~[na:na]
    at org.springframework.boot.docker.compose.core.DockerCli.<init>(DockerCli.java:64) ~[spring-boot-docker-compose-3.1.0.jar:3.1.0]
    at org.springframework.boot.docker.compose.core.DockerCompose.get(DockerCompose.java:92) ~[spring-boot-docker-compose-3.1.0.jar:3.1.0]
    at org.springframework.boot.docker.compose.lifecycle.DockerComposeLifecycleManager.getDockerCompose(DockerComposeLifecycleManager.java:142) ~[spring-boot-docker-compose-3.1.0.jar:3.1.0]
    at org.springframework.boot.docker.compose.lifecycle.DockerComposeLifecycleManager.start(DockerComposeLifecycleManager.java:105) ~[spring-boot-docker-compose-3.1.0.jar:3.1.0]
    at org.springframework.boot.docker.compose.lifecycle.DockerComposeListener.onApplicationEvent(DockerComposeListener.java:53) ~[spring-boot-docker-compose-3.1.0.jar:3.1.0]
    at org.springframework.boot.docker.compose.lifecycle.DockerComposeListener.onApplicationEvent(DockerComposeListener.java:35) ~[spring-boot-docker-compose-3.1.0.jar:3.1.0]
    at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:172) ~[spring-context-6.0.9.jar:6.0.9]
    at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:165) ~[spring-context-6.0.9.jar:6.0.9]
    at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:143) ~[spring-context-6.0.9.jar:6.0.9]
    at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:131) ~[spring-context-6.0.9.jar:6.0.9]
    at org.springframework.boot.context.event.EventPublishingRunListener.multicastInitialEvent(EventPublishingRunListener.java:136) ~[spring-boot-3.1.0.jar:3.1.0]
    at org.springframework.boot.context.event.EventPublishingRunListener.contextLoaded(EventPublishingRunListener.java:98) ~[spring-boot-3.1.0.jar:3.1.0]
    at org.springframework.boot.SpringApplicationRunListeners.lambda$contextLoaded$4(SpringApplicationRunListeners.java:72) ~[spring-boot-3.1.0.jar:3.1.0]
    at java.base/java.lang.Iterable.forEach(Iterable.java:75) ~[na:na]
    at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:118) ~[spring-boot-3.1.0.jar:3.1.0]
    at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:112) ~[spring-boot-3.1.0.jar:3.1.0]
    at org.springframework.boot.SpringApplicationRunListeners.contextLoaded(SpringApplicationRunListeners.java:72) ~[spring-boot-3.1.0.jar:3.1.0]
    at org.springframework.boot.SpringApplication.prepareContext(SpringApplication.java:415) ~[spring-boot-3.1.0.jar:3.1.0]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:310) ~[spring-boot-3.1.0.jar:3.1.0]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1305) ~[spring-boot-3.1.0.jar:3.1.0]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1294) ~[spring-boot-3.1.0.jar:3.1.0]
    at com.licon.YyAuthApplication.main(YyAuthApplication.java:9) ~[classes/:na]
Caused by: org.springframework.boot.docker.compose.core.ProcessStartException: Unable to start command docker version --format {{.Client.Version}}
    at org.springframework.boot.docker.compose.core.ProcessRunner.startProcess(ProcessRunner.java:115) ~[spring-boot-docker-compose-3.1.0.jar:3.1.0]
    at org.springframework.boot.docker.compose.core.ProcessRunner.run(ProcessRunner.java:87) ~[spring-boot-docker-compose-3.1.0.jar:3.1.0]
    at org.springframework.boot.docker.compose.core.ProcessRunner.run(ProcessRunner.java:74) ~[spring-boot-docker-compose-3.1.0.jar:3.1.0]
    at org.springframework.boot.docker.compose.core.DockerCli$DockerCommands.getDockerCommand(DockerCli.java:135) ~[spring-boot-docker-compose-3.1.0.jar:3.1.0]
    ... 25 common frames omitted
Caused by: java.io.IOException: Cannot run program "docker": CreateProcess error=2, 系统找不到指定的文件。
    at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1143) ~[na:na]
    at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1073) ~[na:na]
    at org.springframework.boot.docker.compose.core.ProcessRunner.startProcess(ProcessRunner.java:105) ~[spring-boot-docker-compose-3.1.0.jar:3.1.0]
    ... 28 common frames omitted
Caused by: java.io.IOException: CreateProcess error=2, 系统找不到指定的文件。
    at java.base/java.lang.ProcessImpl.create(Native Method) ~[na:na]
    at java.base/java.lang.ProcessImpl.<init>(ProcessImpl.java:494) ~[na:na]
    at java.base/java.lang.ProcessImpl.start(ProcessImpl.java:159) ~[na:na]
    at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1110) ~[na:na]
    ... 30 common frames omitted

Comment From: wjzxc123

my docker compose version

{"version":"v2.6.1"}

Comment From: mhalbritter

"系统找不到指定的文件。" translates to "The system can not find the file specified.", so it looks like that the system is unable to find docker.

What does

docker --version

give you?

What is the operating system?

Comment From: wjzxc123

Sorry, I dont know that a docker environment is required to use this function. I thought it was the way docker runs using ssh connection.

Comment From: mhalbritter

Docker Compose uses Docker to orchestrate the services, so you need to install Docker and Docker Compose to use that feature.

Is that issue resolved? Can I close it?

Comment From: wjzxc123

ok, thank you

Comment From: rishiraj88

docker is essential for compose. In newer versions, docker-compose is deprecated, rather docker compose is recommended for up and down.