IgorPI
@IgorPI

Docker, MySql is running?

Коллеги, здравствуйте!

Как определить факт запуска mysql в контейнере?

После того как все контейнеры запущены, база данных ещё не доступна, (запускается, создаёт таблицы, базы данных если таковых нет)
Первый запуск достаточно долгий.

Мне нужно как-то определить, что база данных готова.

Ниже код не подходит, так как определяет факт запуска контейнера, но мне это не нужно.
Мне нужно нечто похожее на это.
echo "Waiting for DB to start up..."
while(docker inspect rosinter.db --format '{{.State.Running}}' -eq 'false'){
    Start-sleep 5
}
  • Вопрос задан
  • 192 просмотра
Решения вопроса 1
vasilyevmn
@vasilyevmn
DevOps
while ! mysqladmin ping -h"$DB_HOST" --silent; do
    sleep 1
done


Ну или компоуз аля:
version: "2.1"
services:
    api:
        build: .
        container_name: api
        ports:
            - "8080:8080"
        depends_on:
            db:
                condition: service_healthy
    db:
        container_name: db
        image: mysql
        ports:
            - "3306"
        environment:
            MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
            MYSQL_USER: "user"
            MYSQL_PASSWORD: "password"
            MYSQL_DATABASE: "database"
        healthcheck:
            test: ["CMD", "mysqladmin" ,"ping", "-h", "localhost"]
            timeout: 20s
            retries: 10
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы