Что за чудеса с docker-compose? Ошибка `depends_on`!

Народ, хелп! Не понимаю, что происходит. Пытаюсь поднять стек из нескольких сервисов через docker-compose, все вроде бы стандартно, но ругается на `depends_on`. Причем, сервис, от которого зависит другой, уже запущен и работает. Это вообще нормально?

Пробовал переставлять порядок в файле, удалять и заново добавлять зависимость, даже само определение сервиса переписал. Ничего не помогает, такая же фигня. Может, кто-то сталкивался с такими глюками в этих системах? Это какая-то тонкость в работе, о которой я просто не знаю, или мой docker сошел с ума?

Может, есть какие-то обходные пути, или я что-то упускаю в понимании этих технологий? Любые идеи приветствуются.

Задолбался с этими Docker-контейнерами!
Задолбался с этими Docker-контейнерами!
13-04-2026, 12:04, Знакомства
Гайд по грамотной настройке локального dev-окружения
Гайд по грамотной настройке локального dev-окружения
20-04-2026, 13:56, Общение
Гайд по интеграции AI-ассистентов в учебный процесс: практические шаги
Гайд по интеграции AI-ассистентов в учебный процесс: практические шаги
21-04-2026, 19:14, Образование и технологии
Что за фигня происходит с облачными системами?!
Что за фигня происходит с облачными системами?!
4-04-2026, 09:34, Современные технологии
Автоматизация достала! Что не так с моими скриптами?
Автоматизация достала! Что не так с моими скриптами?
15-04-2026, 09:15, Современные технологии
ЧёПочём

ЧёПочём 27 апреля 2026 13:22

О, DarkRider, привет! Ахах, классика жанра с этим depends_on. Ну, типа, видел такое не раз, когда докер решил поиграть в шахматы с порядком запуска, а ты ему такой: "Эй, я тебе сказал, сначала Вася, потом Петя!"

Шутки шутками, но есть тут одна хитрость, которую любят упускать. Помнишь, я как-то про эти "хитрые" зависимости говорил? Смотри, если твой "Вася" (сервис, от которого зависит другой) запускается, но еще не готов принимать соединения, хотя сам процесс уже стартовал, то Петя, который от него зависит, естественно, пойдет вразнос. Docker-compose видит, что контейнер Васи поднялся, но сам сервис внутри него еще не отвечает на запросы. А Петя ждет, пока Вася скажет: "Я готов, милый, бери сколько хочешь!".

Что можно сделать? Во-первых, да, ты правильно пробовал переставлять. Но если порядок не помогает, то попробуй добавить какой-нибудь скрипт внутрь контейнера "Вася", который будет ждать, пока нужный порт откроется, прежде чем завершить свою инициализацию. Или, как вариант, в "Петю" можно вписать команду, которая будет пинговать "Васю" перед запуском основного процесса. Ну, такая мини-проверка связи, чтоб не было сюрпризов.

А вообще, это одна из тех "прелестей" современных систем, где пытаются автоматизировать все и вся. Зато весело =)

sergey2003

sergey2003 27 апреля 2026 16:11

Привет, DarkRider! Слушай, я тоже как-то с этим `depends_on` мучился. Это такая штука, которая может мозги вынести, если с ней неаккуратно.

Смотри, иногда docker-compose думает, что сервис готов, когда он только начал подниматься. Это про real readiness. Просто `depends_on` проверяет, что контейнер запустился, а не что приложение внутри него уже готово принимать соединения.

Может, попробовать добавить healthcheck'и в docker-compose? Это когда ты явно указываешь, как докер должен проверять, что сервис реально работает. Ну типа, командой какой-нибудь или портом. Тогда он не будет запускать следующий сервис, пока первый не пройдет проверку. Это одна из таких полезных IT-шных фишек, которую стоит знать

Или, как вариант, можно попробовать в скрипте запуска сервиса добавить небольшую задержку или цикл ожидания. Это, конечно, костыль, но иногда работает, пока не разберешься с healthcheck'ами

Надеюсь, поможет!

{login}

Твой комментарий..

Кликните на изображение чтобы обновить код, если он неразборчив

Новости партнёров

File engine/modules/mainstats.php not found.