Как контролировать последовательность запуска сервисов в файле docker-compose.yml? - PullRequest
0 голосов
/ 14 сентября 2018

Вот мой файл docker-compose.yml

    version: '3'
    services:
      mongodb:
        image: hedge-mongo:1.0
        container_name: mongodb
        ports:
          - "27017:27017"
        networks:
          - appNetwork
      service-A:
        image: service-A:1.0
        container_name: service-A
        ports:
          - "3030:3030"
        networks:
          - appNetwork
        depends_on:
          - mongodb   
      service-B:
        image: service-B:1.0
        container_name: service-B
        ports:
          - "4200:4200"
        networks:
          - appNetwork
      service-C:
        image: service-C:1.0
        container_name: service-C
        ports:
          - "8082:8082"
       networks:
      - appNetwork 
   networks:
    appNetwork:
    external: true

В приведенном выше файле service-A и service-C пытаются подключиться к MongoDB Выпуск: В вышеупомянутом файле service-A и service-C подключаются к MongoDB до того, как MongoDB запущен Итак, я хочу запустить service-A и service-C после того, как MongoDB будет полностью запущен. Я попытался добавить зависит от службы-A и службы-C

service-A:
    image: service-A:1.0
    container_name: service-A
    ports:
      - "3030:3030"
    networks:
      - appNetwork
    depends_on:
      - mongodb   

  service-C:
    image: service-C:1.0
    container_name: service-C
    ports:
      - "8082:8082"
    networks:
      - appNetwork 
    depends_on:
      - mongodb 

Тем не менее, иногда это не сработало, иногда сработало, так что это ненадежно. Я хочу убедиться, что мои другие службы работают только после того, как MongoDB работает.

1 Ответ

0 голосов
/ 14 сентября 2018

это условие гонки, которую вы пытаетесь запустить одновременно, поэтому иногда вы получаете результат успеха, а иногда нет ... вот пример того, как решить условие гонки ...

пример 1

пример 2

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...