I would like to use docker-compose in my tests with

spring.docker.compose.skip.in-tests=false

Also I want to use docker-compose when I start my Spring Boot Application inside my Intellij IDE. When you have a multi module project the search for docker-compose.yml fails.

If you have a module "backend" in your "app" project like this:

/app/build.gradle.kts (Parent Project) /app/backend/build.gradle.kts (Spring Boot Project) /app/backend/docker-compose.yml /app/backend/src/main/java/BootApplication.java /app/backend/src/test/java/BootApplicationTest.java

When I run my test it searches for docker-compose.yml in /app/backend/ and finds the file. When I run BootApplication.java it searches in app/ and fails. At least thats the case in IntelliJ. The working directory might differ somewhere else.

Two workarounds: 1. As I have two profiles (dev and integration), I can set the docker-compose file in application-dev.properties to

spring.docker.compose.file=backend/docker-compose.yml
  1. Or I can set the working directory in my IntelliJ Run configuration

Maybe SpringBootApplication should search in its own project (app/backend) and not only in the current working directory.

Comment From: philwebb

Thanks for the suggestion, but we don't think searching down the tree for docker compose files is something we should do. It's likely to be a costly operation and it's possible that we might find multiple docker-compose.yml files.

There are a number of aspects in Spring Boot that rely on having a correctly set working directory. For example, finding external application.properties files or writing out a pid file. I think it might be worth raising this issue with Jetbrains to see if they can consider changing their configuration defaults for Spring Boot applications?