Co je Docker Compose?
Docker Compose je nástroj, který naráz spustí aplikaci složenou z několika kontejnerů. Skutečná aplikace bývá málokdy jen jeden program: máte webový server, databázi, často i cache a proces běžící na pozadí. Compose vám dovolí popsat to všechno v jednom souboru, obvykle pojmenovaném compose.yaml, a pak je jediným příkazem spustit, zastavit a propojit.
Bez Compose spouštíte každý kontejner ručně dlouhým příkazem docker run a propojujete je sami. S Compose je zdrojem pravdy ten soubor. Kdokoli v týmu spustí docker compose up a dostane stejnou sadu služeb, na stejné síti a se stejným nastavením.
Lidsky řečeno
Představte si jeden kontejner jako jeden spotřebič v kuchyni, třeba troubu. Docker Compose je recept, který říká, jaké spotřebiče potřebujete, jak se propojí a v jakém pořadí je zapnout. Místo abyste každé ráno všechno zapínali ručně, předáte recept a celá kuchyně naběhne pokaždé stejně.
Jak to funguje
Napíšete soubor compose.yaml, který vyjmenuje vaše služby (z každé služby vznikne jeden nebo více kontejnerů) a k tomu sítě a úložiště, která potřebují. Tady je nejmenší možný příklad: webová aplikace, která komunikuje s databází Postgres.
services:
web:
build: .
ports:
- "8000:8000"
depends_on:
- db
db:
image: postgres:16
environment:
POSTGRES_PASSWORD: example
volumes:
- db-data:/var/lib/postgresql/data
volumes:
db-data:
Spustíte docker compose up v té složce a Compose sestaví image pro službu web, stáhne image postgres:16, oba kontejnery nastartuje a dá je na společnou síť. Služba web se k databázi dostane prostě přes název db, protože síťování za vás vyřeší Compose. Pojmenované úložiště db-data udrží data databáze i poté, co se kontejnery zastaví. Až skončíte, příkaz docker compose down kontejnery čistě odstraní.
Kdy ho použít a kdy ne
Compose použijte, když:
- Vyvíjíte lokálně a chcete jediným příkazem rozběhnout celou aplikaci na novém počítači.
- Vaše aplikace má pár služeb, které spolu musejí komunikovat, třeba API, databázi a frontu.
- Pouštíte integrační testy v CI a potřebujete čerstvě nastartované reálné závislosti, ne jejich napodobeniny.
Sáhněte po něčem jiném, když:
- Běžíte v produkci ve velkém. Compose běží na jednom stroji. Pro více serverů, automatické restarty a postupné aktualizace použijte orchestrátor, například Kubernetes.
- Máte jen jeden kontejner. Obyčejný
docker runje jednodušší a Compose vám tu moc nepřidá.
Na co si dát pozor
- Neberte Compose jako produkční platformu. Pro lokální vývoj a CI je skvělý, ale nerozloží zátěž mezi více strojů a sám se po výpadku nezotaví.
- Nepište hesla přímo do souboru. Hesla a API klíče patří do proměnných prostředí nebo do správce tajemství, ne do verzovaného
compose.yaml. - Pamatujte, že pojmenovaná úložiště přetrvávají. Data přežijí příkaz
docker compose down. Smažete je až příkazemdocker compose down -v, který se snadno spustí omylem. - Nepředpokládejte, že
depends_onpočká na připravenost. Řídí jen pořadí startu, ne to, jestli je služba opravdu připravená přijímat spojení. Pokud aplikace potřebuje běžící databázi dřív, než se sama spustí, přidejte healthcheck.
Související články
- SDK vs API: v čem se liší? - Dva pojmy, které vývojáři pletou dohromady, vysvětlené na jasných příkladech.
- Co je context engineering? - Dovednost dát AI nástrojům správné informace ve správnou chvíli.
- Co je to Vibe coding? - Tvoření aplikací skrze AI, kde prompting nahrazuje manuální psaní kódu.
Chcete být o krok napřed?
Nenechte si utéct naše nejlepší postřehy. Žádný spam, jen praktické analýzy, pozvánky na exkluzivní eventy a shrnutí podcastů přímo do vaší schránky.
