Docker compose не запускает сервисы по порядку зависимостей как решить
Рейтинг: 49.1% · 18 голосов
Войдите, чтобы голосовать
Голосовать «За» и «Против» могут только авторизованные пользователи. Войдите в свой аккаунт — или зарегистрируйтесь, это займёт минуту.
Нет аккаунта? Зарегистрироваться
Docker compose не запускает сервисы по порядку зависимостей как решить
Замучился с банальной проблемой: есть docker-compose с тремя сервисами — postgres, redis и app. В depends_on указал зависимости, но app стартует раньше чем postgres успевает принять соединения, и падает с ошибкой connection refused. Перезапускаю вручную — работает. Как сделать нормальное ожидание готовности?
✔ Лучший ответ выбран автором и совпадает с автоматическим подбором — miron_sql94
Вот рабочий пример конфига который я использую в продакшене уже год без проблем. Для postgres в healthcheck пишешь: test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"], interval: 5s, timeout: 5s, retries: 5. В depends_on для app: postgres: condition: service_healthy. Для redis аналогично, только test: ["CMD", "redis-cli", "ping"]. Это решает 95% случаев с очерёдностью старта.
Re: Docker compose не запускает сервисы по порядку зависимостей как решить
depends_on по умолчанию ждёт только запуска контейнера, не готовности сервиса внутри. Тебе нужен healthcheck. В секции postgres добавь healthcheck с командой pg_isready, а в depends_on для app укажи condition: service_healthy. Тогда app не стартует пока postgres не пройдёт healthcheck.
- miron_sql94
- Сообщения: 3
- Зарегистрирован: Пн май 11, 2026 9:16 pm
Re: Docker compose не запускает сервисы по порядку зависимостей как решить
✔ Лучший ответ — выбран автором и совпадает с авто-подбором
Вот рабочий пример конфига который я использую в продакшене уже год без проблем. Для postgres в healthcheck пишешь: test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"], interval: 5s, timeout: 5s, retries: 5. В depends_on для app: postgres: condition: service_healthy. Для redis аналогично, только test: ["CMD", "redis-cli", "ping"]. Это решает 95% случаев с очерёдностью старта.
- tanya_sigma31
- Сообщения: 20
- Зарегистрирован: Чт май 14, 2026 10:41 pm
Re: Docker compose не запускает сервисы по порядку зависимостей как решить
Помимо healthcheck советую добавить в само приложение логику retry при подключении к БД. Даже если postgres ответил на pg_isready, инициализация схемы и первые запросы могут занять время. В Python это asyncpg с retry через tenacity, в Go — стандартный backoff. Инфраструктурное решение + application-level retry = надёжность.
Re: Docker compose не запускает сервисы по порядку зависимостей как решить
А ещё есть утилита wait-for-it.sh — добавляешь её в образ и в command пишешь wait-for-it postgres:5432 -- python app.py. Старый способ, но до сих пор работает если по каким-то причинам не хочешь трогать compose-файл.
- kirill_net
- Сообщения: 10
- Зарегистрирован: Вт май 12, 2026 1:04 pm
Поделиться темой:
✈ Telegram
VK
- Похожие темы
-
- Переехали с Kubernetes на docker-compose и сэкономили кучу времени — кто ещё так делал?
16 ответов · 1173 просмотров
-
- Docker Compose окончательно мёртв? Все тащат в Kubernetes даже для трёх контейнеров
7 ответов · 841 просмотров
-
-
- KMP с Compose Multiplatform или Flutter — что выбрать под новый продукт в 2026?
10 ответов · 708 просмотров
-
-
- Команда из 8 человек тратила 60 часов в неделю на k8s. Переехали на docker-compose и выдохнули
6 ответов · 611 просмотров
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость