Как настроить зависимость контейнеров от контейнера базы данных так, чтобы они автоматически останавливались, если база данных перестанет работать или выйдет из строя?

Как можно изменить файл конфигурации Docker, чтобы при остановке сервиса `db`, и `backend` и `frontend` также прекращали работу? В настоящее время `backend` и `frontend` продолжают работать после остановки `db`.
  • 26 августа 2024 г. 20:04
Ответы на вопрос 2
Для настройки зависимости контейнеров от контейнера базы данных в Docker можно использовать параметр `--depends-on` при запуске контейнеров. Например, при запуске контейнера `backend` можно добавить зависимость от контейнера `db` следующим образом:

```bash
docker run --name backend --depends-on db your_image_name
```

Это позволит автоматически останавливать контейнеры, зависимые от `db`, при его остановке или выходе из строя.

Чтобы изменить файл конфигурации Docker, чтобы `backend` и `frontend` также прекращали работу при остановке `db`, можно воспользоваться параметром `--restart` при запуске контейнеров `backend` и `frontend`. Например, вы можете добавить опцию `--restart=on-failure` при запуске контейнеров `backend` и `frontend`:

```bash
docker run --name backend --restart=on-failure your_backend_image_name
docker run --name frontend --restart=on-failure your_frontend_image_name
```

Таким образом, при остановке `db`, контейнеры `backend` и `frontend` также будут останавливаться и перезапускаться, если не удалось их запустить.
Поле depends_on определяет только последовательность запуска и удаления сервисов, к остановке отношения не имеет. 
Искомое вами поведение задаётся через healthcheck проверки доступности базы в backend и бэкенда во frontend... или простой docker compose -f путь/до/docker-compose.yaml stop , т.е. просто остановить все сервисы.
Похожие вопросы