В докере depends_on не устанавливает порядок запуска служб
Я изучаю микросервисную архитектуру по книге "Микросервисы Spring в действии". Дошел до страниц, где два микросервиса упаковываются в докер. Один микросервис - служба лицензий, и второй миросервис - служба конфигураций, которая предоставляет конфиги для запуска службы лицензий в разном окружении. По логике сначала должен стартовать служба конфига, и только когда она уже работает, должен запускаться микросервис лицензий. Но это не работает, директива depends_on почему-то не устанавливает порядок запуска сервисов.
version: '3.7'
services:
configserver:
image: ostock/config-server:1.0
ports:
- "8071:8071"
environment:
ENCRYPT_KEY: "fje83Ki8403Iod87dne7Yjsl3THueh48jfuO9j4U2hf64Lo"
networks:
backend:
aliases:
- "configserver"
licensingservice:
image: ostock/licensing-service:1.0
environment:
PROFILE: "dev"
CONFIGSERVER_URI: "http://configserver:8071"
CONFIGSERVER_PORT: "8071"
DATABASESERVER_PORT: "5432"
ENCRYPT_KEY: "IMSYMMETRIC"
depends_on:
configserver:
condition: service_started
ports:
- "8080:8080"
networks:
- backend
networks:
backend:
driver: bridge
Как правильно сконфигурировать docker-compose, чтобы службы запускались в правильном порадке (сначала конфиг, потом лицензии)?
Обновление. Добавил healthcheck в конфиг сервиса конфигурации
version: '3.7'
services:
configserver:
image: ostock/config-server:1.0
ports:
- "8071:8071"
environment:
ENCRYPT_KEY: "fje83Ki8403Iod87dne7Yjsl3THueh48jfuO9j4U2hf64Lo"
healthcheck:
test: "curl --fail --silent localhost:8071/actuator/health | grep UP || exit 1"
interval: 20s
timeout: 5s
retries: 5
start_period: 40s
networks:
backend:
aliases:
- "configserver"
licensingservice:
image: ostock/licensing-service:1.0
environment:
PROFILE: "dev"
CONFIGSERVER_URI: "http://configserver:8071"
CONFIGSERVER_PORT: "8071"
DATABASESERVER_PORT: "5432"
ENCRYPT_KEY: "IMSYMMETRIC"
depends_on:
configserver:
condition: service_healthy
ports:
- "8080:8080"
networks:
- backend
networks:
backend:
driver: bridge