Встречается на собеседованиях • сегодня
Как сделать так, чтобы сервер запускался после запуска БД в Docker Compose
В Docker Compose можно использовать depends_on для указания зависимостей между сервисами, но это не гарантирует готовность БД. Для проверки доступности БД лучше использовать healthcheck и скрипт ожидания.
Пример docker-compose.yml:
yaml
services:
db:
image: postgres
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 5s
timeout: 5s
retries: 5
app:
build: .
depends_on:
db:
condition: service_healthy
command: ["./wait-for-db.sh", "db:5432", "--", "java", "-jar", "app.jar"]
text
Пример `wait-for-db.sh` (основан на `wait-for-it`):
```bash
#!/bin/sh
host=$1
shift
until nc -z $host; do
echo "Waiting for $host..."
sleep 1
done
exec "$@"Ключевые моменты:
depends_onсcondition: service_healthyждет успешного healthcheck- Скрипт ожидания проверяет доступность порта БД
- Healthcheck БД проверяет ее готовность принимать соединения

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы