Sobes.tech
Junior — Middle

Ako zabezpečiť oneskorenie pri štarte služby v Docker Compose, aby neprijímala prichádzajúce požiadavky, kým sa úplne nepripraví na prácu?

sobes.tech AI

Odpoveď od AI

Aby služba v Docker Compose ne prijímala požiadavky, kým nie je úplne pripravená, zvyčajne sa používa mechanizmus "healthcheck" a oneskorenie štartu pomocou skriptov na čakanie.

Hlavné prístupy:

  1. Healthcheck v docker-compose.yml — definujete príkaz, ktorý kontroluje pripravenosť služby (napríklad požiadavka na API alebo kontrola portu). Iné služby môžu závisieť od stavu zdravia.

  2. Skript na čakanie (wait-for-it, dockerize alebo vlastný) — do entrypointu služby sa pridá skript, ktorý čaká na dostupnosť potrebného zdroja (napríklad databázy) pred spustením hlavného procesu.

Príklad healthcheck v docker-compose.yml:

services:
  app:
    image: myapp
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8080/health"]
      interval: 10s
      timeout: 5s
      retries: 5

Alebo použitie skriptu na čakanie v Dockerfile:

ENTRYPOINT ["./wait-for-it.sh", "db:5432", "--", "./start-app.sh"]

Týmto spôsobom služba nezačne prijímať požiadavky, kým nebude pripravená.