Как дождаться запуска БД и выполнить команды?

Есть проект из 2х контейнеров. На одном стоит БД mysql, на другом развернуто приложение. Как можно составить Dockerfile или docker-compose.yml, чтобы при сборке образа приложения или запуске контейнера дожидался полный старт БД, и только потом запускался сервис полностью?


Ответы (1 шт):

Автор решения: Maksim Alekseev

При запуске сервиса можно запустить bash-script, для этого нужно создать файл с расширением sh например entrypoint.sh и в нем запускать команду sleep, после нее можно указать остальные команды для запуска вашего сервиса.

#!/bin/bash

sleep 15

<другие команды>

Далее, в docker-compose.yml в вашем сервисе нужно добавить:

command: ['/path_to_bash_script/entrypoint.sh']

для запуска этого скрипта, при сборке контейнера.

→ Ссылка