Giter VIP home page Giter VIP logo

Comments (2)

sivaprasadreddy avatar sivaprasadreddy commented on May 1, 2024

Instead of putting all the services in a single compose.yml file, I tried to split them into separate files.

common.yml

version: "3.8"
services:
  rabbitmq:
    image: rabbitmq:3.12.11-management
    ...

catalog.yml

version: "3.8"
services:
  catalog-db:
    image: postgres:16-alpine
    ...

orders.yml

version: "3.8"
include:
  - common.yml
services:
  orders-db:
    image: postgres:16-alpine
    ...

Now, in the application.properties file I configured which file to use as follows:

spring.docker.compose.file=compose-files/orders.yml
spring.docker.compose.lifecycle-management=start_only

Now, the problem is, that the first spring-boot app (say order-service) that I started works as expected. But when I start the second application (say catalog-service) I see the following message due to which the required services are not being started.

s.b.d.c.l.DockerComposeLifecycleManager : Using Docker Compose file '/path/compose-files/catalog.yml'
s.b.d.c.l.DockerComposeLifecycleManager : There are already Docker Compose services running, skipping startup

from spring-boot.

scottfrederick avatar scottfrederick commented on May 1, 2024

I tried to split them into separate files.

Another option would be to keep the services in one file, use Docker Compose profiles, and modify your application.properties to control when individual services are started.

I see the following message due to which the required services are not being started.

This behavior is mentioned in the documentation:

If the Docker Compose services are already running when starting the application, Spring Boot will only create the service connection beans for each supported container. It will not call docker compose up again and it will not call docker compose stop when the application is shutdown.

There is some discussion on why we chose to implement things this way in #38398.

You can set spring.docker.compose.lifecycle-management=none to prevent this message. You will have to start the service manually (for example, with docker compose up), but Spring Boot will create the service connections as expected.

An additional mode like the one suggested in #39749, where docker compose up would be called without first checking to see what services are running, could help this situation. I will close this issue in favor of that issue.

from spring-boot.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.