Поле depends_on
будет работать с docker-compose
, но вы обнаружите, что оно не поддерживается, если вы перейдете в режим роя.Это также гарантирует, что контейнер базы данных создан, но не обязательно готов к приему соединений.
Для этого есть несколько опций:
- Разрешить бэкэнд-контейнер и настроить политику перезапуска,Это некрасиво, приводит к тому, что сообщается о ложных ошибках, но также является самым простым для реализации.
- Выполните соединение из вашего приложения с циклом повторных попыток, перерывом между повторными попытками и тайм-аутом, если база данных не 'начать своевременно.Обычно это мой предпочтительный метод, но он требует изменения в вашем приложении.
- Используйте сценарий точки входа с такой командой, как wait-for-it.sh , которая ожидает удаленного ресурса длястать доступным, и как только эта команда будет выполнена успешно, запустите ваше приложение.Это не охватывает все сценарии как полное клиентское соединение, но может быть менее навязчивым для реализации, поскольку требует только изменений в сценарии точки входа, а не в самом приложении.