0

I have a local.yml file in which I have defined 3 services: service3 depends on service2, service2 depends on service1. I want to enforce a starting order between them: service1 starts firs, then service2, then service3. What is very important for me is that service3 is the last one to start.

What I tried to do is adding the following piece of code inside service3:

services:
  service3:
    healthcheck:
      test: curl http://localhost:8080/someUrl || exit 1
      interval: 10s
    build:
      context: ./myDir
      dockerfile: ./dockerfile3
    depends_on:
      - service2

  service2:
    build:
      context: .
      dockerfile: /dockerfile2
    depends_on:
      - service1   

  service1:
    image: service1_image

However http://localhost:8080/someUrl is available before serivce2 finishes its starting. What I see right now in the logs (as starting order) is the following:

service1      |.......
service1      |.......
service2      |.......
service2      |.......
service3      |....... //starts after the url is available
service3      |....... //prints that service3 is available
service2      |....... //and then service2 continues to build
service2      |.......
service2      |.......

How do I display the log messages from service3 at the end? I.e. how do I start service3 in the last order?

sammy333
  • 1,384
  • 6
  • 21
  • 39
  • take a look at https://stackoverflow.com/questions/31746182/docker-compose-wait-for-container-x-before-starting-y – Siyu Nov 12 '18 at 11:04
  • 1
    Possible duplicate of [Docker Compose wait for container X before starting Y](https://stackoverflow.com/questions/31746182/docker-compose-wait-for-container-x-before-starting-y) – Siyu Nov 12 '18 at 11:04

0 Answers0