Kromě základních definic služeb nabízí Docker Compose funkce pro reálný svět — správa prostředí, health checks, podmínky závislostí, profily, konfigurace sítí/svazků, scaling a overrides — které ji činí výkonnější pro vývoj a komplexní zásobníky.
Kromě základních definic služeb nabízí Docker Compose funkce pro reálný svět — správa prostředí, health checks, podmínky závislostí, profily, konfigurace sítí/svazků, scaling a overrides — které ji činí výkonnější pro vývoj a komplexní zásobníky.
services:
app:
build: .
env_file: .env # load environment variables from a file
environment:
- NODE_ENV=production
ports:
- "${PORT:-3000}:3000" # variable substitution with a default
Compose podporuje .env soubory, proměnné prostředí a substituci proměnných (${VAR:-default}) pro flexibilní konfiguraci specifickou pro konkrétní prostředí.
services:
db:
image: postgres:16
healthcheck: # define how to check the service is healthy
test: ["CMD", "pg_isready", "-U", "postgres"]
interval: 5s
retries: 5
app:
build: .
depends_on:
db:
condition: service_healthy # wait until db is HEALTHY (not just started)
depends_on s condition: service_healthy (plus healthcheck) zajišťuje, že služba čeká, dokud její závislost není skutečně připravena — ne jen spuštěna — čímž řeší běžný problém "aplikace se spustí předtím, než je databáze připravena" race condition.
PROFILES → group optional services (e.g. only start "debug" tools when wanted):
docker compose --profile debug up
OVERRIDE files → docker-compose.override.yml auto-merges (dev overrides);
or -f compose.yml -f compose.prod.yml for environment-specific configs
SCALING → docker compose up --scale worker=3 (run 3 instances of a service)
NAMED VOLUMES & NETWORKS → declare and configure them at the top level
Rozvíjení pokročilých funkcí Docker Compose je cenne pro efektivní používání Compose v reálném vývoji a komplexních zásobnících, stavující na základních definicích služeb.
Zatímco základní Compose definuje služby, pokročilé funkce řeší reálné potřeby: správa prostředí (.env soubory, substitucia proměnných s výchozími hodnotami) umožňuje flexibilní konfiguraci specifickou pro konkrétní prostředí bez pevného kódování — důležité pro použití stejného compose souboru v různých nastavení. Health checks s podmínkami závislostí (depends_on s condition: service_healthy) řeší velmi běžný, frustrující problém — race condition, kdy se kontejner aplikace spustí před tím, než je databáze skutečně připravena přijímat připojení, což způsobuje selhání při spouštění; porozumění tomu, jak nechat služby čekat na skutečnou připravenost (ne jen start kontejneru), je prakticky důležité pro spolehlivé spouštění multi-kontejnerů. Profily (selektivní spouštění volitelných služeb jako debug nástrojů), override soubory (vrstvení konfigurací specifických pro prostředí, např. dev overrides nebo production configs) a scaling (spouštění více instancí služby) rozšiřují Compose pro různé pracovní postupy a prostředí.
Tyto funkce činí Compose vhodným pro sofistikovaná vývojová prostředí a komplexní aplikační zásobníky spíše než jen triviální nastavení.
Jelikož reálný vývoj a komplexní aplikace potřebují flexibilitu konfigurace, správné řazení spouštění (připravenost, ne jen start) a nastavení specifické pro prostředí, a jelikož pokročilé funkce Compose (správa env, závislosti založené na health-check, profily, overrides, scaling) tyto potřeby řeší, porozumění pokročilému Docker Compose je cenne, prakticky relevantní znalost pro efektivní používání Compose v reálných projektech, povyšující jej ze základního spouštění multi-kontejnerů na robustní nástroj pro správu komplexních, konfigurovatelných aplikačních zásobníků — přičemž funkce health-check dependency řeší zejména běžný problém spolehlivosti spouštění v reálném světě.