Как я могу запустить один контейнер раньше другого? - PullRequest
0 голосов
/ 02 мая 2019

Мне нужно начать backend-container после запуска database-container.Как я могу сделать это с помощью docker-compose?

Ответы [ 3 ]

0 голосов
/ 02 мая 2019

Используйте предложение depends_on в вашем бэкэнд-контейнере. Примерно так:

version: "3.7"
services:
  web:
    build: .
    depends_on:
      - db
  db:
    image: postgres

Здесь - документация об этом. Веселись!

0 голосов
/ 03 мая 2019

Поле depends_on будет работать с docker-compose, но вы обнаружите, что оно не поддерживается, если вы перейдете в режим роя.Это также гарантирует, что контейнер базы данных создан, но не обязательно готов к приему соединений.

Для этого есть несколько опций:

  • Разрешить бэкэнд-контейнер и настроить политику перезапуска,Это некрасиво, приводит к тому, что сообщается о ложных ошибках, но также является самым простым для реализации.
  • Выполните соединение из вашего приложения с циклом повторных попыток, перерывом между повторными попытками и тайм-аутом, если база данных не 'начать своевременно.Обычно это мой предпочтительный метод, но он требует изменения в вашем приложении.
  • Используйте сценарий точки входа с такой командой, как wait-for-it.sh , которая ожидает удаленного ресурса длястать доступным, и как только эта команда будет выполнена успешно, запустите ваше приложение.Это не охватывает все сценарии как полное клиентское соединение, но может быть менее навязчивым для реализации, поскольку требует только изменений в сценарии точки входа, а не в самом приложении.
0 голосов
/ 02 мая 2019

Вы должны изучить конфигурацию зависимость_он для создания докеров.

Короче говоря, вы должны иметь возможность сделать что-то вроде:

services:
  database-container:
    # configuration
  backend-container:
    depends_on:
      - database-container
    # configuration
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...