Hogyan biztosítható késleltetés a Docker Compose-ban a szolgáltatás indításakor, hogy ne fogadjon bejövő kéréseket, amíg teljesen felkészül a működésre?
sobes.tech MI
Válasz az MI-től
Annak érdekében, hogy a Docker Compose-ban futó szolgáltatás ne fogadjon kéréseket, amíg teljesen nem kész, általában a "healthcheck" mechanizmust és várakozó szkripteket használunk.
Fő megközelítések:
-
Healthcheck a docker-compose.yml-ben — meghatároz egy parancsot, amely ellenőrzi a szolgáltatás készültségét (pl. API kérés vagy port ellenőrzése). Más szolgáltatások a státuszától függhetnek.
-
Várakozó szkript (wait-for-it, dockerize vagy saját) — a szolgáltatás entrypointjába hozzáadunk egy szkriptet, amely várja a szükséges erőforrás (pl. adatbázis) elérhetőségét, mielőtt elindítaná a fő folyamatot.
Példa healthcheck a docker-compose.yml-ben:
services:
app:
image: myapp
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8080/health"]
interval: 10s
timeout: 5s
retries: 5
Vagy várakozó szkript használata Dockerfile-ban:
ENTRYPOINT ["./wait-for-it.sh", "db:5432", "--", "./start-app.sh"]
Így a szolgáltatás csak akkor kezd el fogadni kéréseket, amikor készen áll.