Sobes.tech
Junior — Middle

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:

  1. 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.

  2. 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.