Kā nodrošināt kavēšanos pakalpojuma sākšanā Docker Compose, lai tas nepieņemtu ienākošos pieprasījumus, līdz tas ir pilnībā sagatavots darbam?
sobes.tech AI
Atbilde no AI
Lai Docker Compose pakalpojums nepieņemtu pieprasījumus līdz pilnīgai sagatavošanai, parasti tiek izmantots "healthcheck" mehānisms un starta aizkave ar gaidīšanas skriptiem.
Galvenie pieejas veidi:
-
Healthcheck docker-compose.yml — definējiet komandu, kas pārbauda pakalpojuma gatavību (piemēram, API pieprasījumu vai porta pārbaudi). Citas pakalpojumi var būt atkarīgi no veselības stāvokļa.
-
Gaidīšanas skripts (wait-for-it, dockerize vai pats) — pakalpojuma entrypoint pievienojiet skriptu, kas gaida nepieciešamā resursa (piemēram, datu bāzes) pieejamību pirms galvenā procesa uzsākšanas.
Piemērs healthcheck docker-compose.yml:
services:
app:
image: myapp
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8080/health"]
interval: 10s
timeout: 5s
retries: 5
Vai izmantojiet gaidīšanas skriptu Dockerfile:
ENTRYPOINT ["./wait-for-it.sh", "db:5432", "--", "./start-app.sh"]
Tādējādi pakalpojums nesāks pieņemt pieprasījumus, kamēr tas nebūs gatavs.