A Docker Compose alapok egyetlen fájlra épülnek, amelyben leírod az alkalmazásod összes szolgáltatását. A hivatalos dokumentáció szerint a Compose több konténeres alkalmazások futtatására való. Egy paranccsal elindítod, egy másikkal leállítod az egész rendszert. Ez a cikk a compose.yaml felépítését és a leggyakoribb parancsokat mutatja be a Docker dokumentációja alapján.
- A Compose fájl neve alapból compose.yaml.
- A
docker compose up -dháttérben indítja a szolgáltatásokat. - A
docker compose downtörli a konténereket, a köteteket nem. - A
down -va nevesített köteteket is törli, vigyázz vele.
A Compose-nak szüksége van egy működő Dockerre. Ha még nincs, kezdd a Docker telepítése Ubuntun cikkel. A kötetek mentéséről a Docker volume mentése és visszaállítása szól. A példák a Docker hivatalos Compose gyorsindítójából származnak.
Mire jó a Docker Compose alapok szerint a compose.yaml?
A dokumentáció szerint a Compose fájl egyetlen helyen írja le a szolgáltatásokat, a hálózatokat és a köteteket. Így nem kell hosszú docker run parancsokat fejben tartanod. A fájl verziókezelőbe is tehető, ezért a beállításod reprodukálható marad. A Compose parancssori eszköze a Docker Desktop része.
Az alapértelmezett fájlnév a dokumentáció szerint compose.yaml, ez az ajánlott. A compose.yml is működik a munkakönyvtárban. A régebbi docker-compose.yaml és docker-compose.yml nevet visszafelé kompatibilitásból még támogatja.
A dokumentáció négy kulcsparancsot emel ki: az up, a down, a logs és a ps parancsot. Ezekkel a mindennapi munka nagy részét elvégezheted. A részletes kapcsolókat a parancssori referencia sorolja fel. A következő szakasz táblázata ezeket foglalja össze.
A cikk példái a gyorsindító Flask és Redis alkalmazását követik. A web szolgáltatás a Flask alkalmazás, a redis szolgáltatás a háttértár. A két szolgáltatás egy Compose projektként fut együtt. Így egy paranccsal indítható az egész.
Melyik Compose parancs mire való?
A Compose parancsai a docker compose előtaggal indulnak, utána jön az alparancs. A parancssori referencia szerint a docker compose up létrehozza és elindítja a konténereket. A down leállítja és eltávolítja a konténereket és a hálózatokat. Az alábbi táblázat a leggyakoribb parancsokat gyűjti össze, a referencia leírásával.
| Parancs | Mit csinál a referencia szerint |
|---|---|
| docker compose up | Konténerek létrehozása és indítása |
| docker compose down | Konténerek és hálózatok leállítása és eltávolítása |
| docker compose ps | A konténerek listázása |
| docker compose logs | A konténerek kimenetének megjelenítése |
| docker compose stop | A szolgáltatások leállítása |
| docker compose config | A Compose fájl feldolgozott, kanonikus megjelenítése |
A teljes lista ennél hosszabb, például a build, a restart és az exec parancs is szerepel benne. A kapcsolók részletes leírását a hivatalos referenciában találod. A cikk további részei a táblázat parancsait használják.
Hogyan épül fel egy egyszerű compose.yaml?
A Docker gyorsindítója egy két szolgáltatásos alkalmazást mutat be. A web szolgáltatás a saját mappából épül, a redis szolgáltatás kész képfájlból indul. A fájl a services kulcs alatt sorolja fel a szolgáltatásokat. A gyorsindító a külső portot környezeti változóból veszi.
services:
web:
build: .
ports:
- "${APP_PORT}:5000"
environment:
REDIS_HOST: redis
REDIS_PORT: 6379
redis:
image: redis:alpine
A ${APP_PORT} értékét a Compose a mellette lévő .env fájlból olvassa be automatikusan. Ebbe a fájlba például az APP_PORT=8000 sor kerülhet, a szám tetszőleges. A build: . a munkakönyvtárban keres Dockerfile-t. Az image kulcs kész képet tölt le a tárolóból.
Ha módosítod a fájlt, érdemes előbb ellenőrizni. A docker compose config kiírja a feldolgozott beállítást, a változók behelyettesítésével együtt. Így látod, mit kap valójában a Docker. Ez a docker compose alapok egyik leghasznosabb ellenőrző lépése.
Hogyan indítsd, állítsd le és töröld a szolgáltatásokat?
A compose.yaml fájl mappájában a docker compose up elindítja az egész alkalmazást. A -d kapcsoló háttérbe teszi a futást, így a terminál szabad marad. A gyorsindító szerint a docker compose logs -f élőben követi a szolgáltatások naplóját. A docker compose ps megmutatja, mi fut éppen, és milyen állapotban.
docker compose up -d
docker compose ps
docker compose logs -f
A gyorsindító szerint a docker compose stop csak leállítja a szolgáltatásokat, a konténerek megmaradnak. A docker compose down a konténereket és a hálózatokat is eltávolítja. A nevesített kötetek ilyenkor megmaradnak, ezért az adataid épek. Újraindításkor a Compose új konténert hoz létre a régi adatokkal.
Van egy veszélyesebb kapcsoló is. A docker compose down -v a dokumentáció szerint a nevesített köteteket is törli. Ez az adatok végleges elvesztését jelenti. Éles adatnál előbb készíts mentést.
Hogyan várja meg egyik szolgáltatás a másikat?
A gyorsindító egészségellenőrzést (healthcheck) és a depends_on kulcsot együtt használja. A redis szolgáltatás egy redis-cli ping parancsot futtat az ellenőrzéshez. A web szolgáltatás a condition: service_healthy feltétellel csak ezután indul. Így az alkalmazás nem próbál csatlakozni egy még nem kész Redis szolgáltatáshoz.
redis:
image: redis:alpine
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 5s
timeout: 3s
retries: 5
start_period: 10s
A példában az ellenőrzés 5 másodpercenként fut, az időkorlátja 3 másodperc, és legfeljebb 5 próbálkozás van. A start_period értéke 10 másodperc. Ezek a gyorsindító példaértékei, a sajátodhoz igazítsd őket. A web szolgáltatásnál a depends_on alatt jelenik meg a feltétel:
web:
depends_on:
redis:
condition: service_healthy
A depends_on feltétel nélkül a szolgáltatások indítási sorrendjét adja meg. A condition: service_healthy ezt kiegészíti a készenlét megvárásával. Mindkét sor a web szolgáltatás beállításai közé kerül.
Hogyan tárold tartósan az adatokat kötettel?
A konténer fájlrendszere törléskor elvész, ha nem használsz kötetet. A gyorsindító ezért a Redis adatait nevesített kötetbe teszi, hogy a konténer cseréje után is megmaradjanak. A szolgáltatásnál a redis-data:/data sor köti össze a kötetet a konténerrel. A fájl végén a volumes: kulcs alatt nevesíted a kötetet, ez is a docker compose alapok része.
redis:
image: redis:alpine
volumes:
- redis-data:/data
volumes:
redis-data:
A docker compose down után az adat megmarad. Újraindításkor a Compose ugyanazt a kötetet csatolja vissza. Csak a down -v törli. A mentés módját a kötetmentési cikkünk mutatja be.
A kötet neve egyedi azonosító, ezzel hivatkozol rá a szolgáltatásnál. A volumes kulcs a services kulccsal azonos szinten áll a fájlban. Ez a fenti példán is jól látszik.
Mit érdemes még megnézned?
A gyorsindító két további lehetőséget említ a végén, a fejlesztéshez és a nagyobb projektekhez. A docker compose up --watch a fájlmódosításokat figyeli fejlesztés közben. Az include elem több Compose fájlt kapcsol össze egy alkalmazássá. Ezeket akkor érdemes elővenni, ha a projekted már nő, és egy fájl kevés vagy túl hosszúra nyúlik.
Ha a szolgáltatásod GPU-t kér, a Docker GPU-hozzáférés NVIDIA Container Toolkittel cikkben találsz leírást. Otthoni szerverhez a Az Ubuntu Server nyílt forráskódú platform összehasonlítás segít választani. Az Immich telepítése jó gyakorlópélda, lásd az Immich telepítése cikket. A terminál kezeléséhez a tmux használata cikk tartozik.
Ha elakadsz, a docker compose config és a docker compose logs a két első eszközöd. Az előbbi a beállítást, az utóbbi a futó konténerek kimenetét mutatja. A hivatalos referencia minden parancshoz részletes leírást ad. A kezdéshez elég a cikkben bemutatott néhány parancs és egyetlen, jól átlátható compose.yaml fájl.
Gyakran ismételt kérdések
Mi a Docker Compose alapok lényege?
A Docker Compose alapok lényege, hogy egy fájlban írod le a szolgáltatásokat, hálózatokat és köteteket. Egy paranccsal elindítod, egy másikkal leállítod az egészet. A fájl alapértelmezett neve compose.yaml. A beállítás így verziókezelhető és reprodukálható.
Hogyan indítom el a szolgáltatásokat háttérben?
A fájl mappájában add ki a docker compose up -d parancsot. A -d kapcsoló háttérben futtatja a konténereket. A docker compose ps megmutatja az állapotukat, így látod, mi fut éppen. A naplót a docker compose logs -f követi.
Mit töröl a docker compose down?
A docker compose down a konténereket és a hálózatokat törli. A nevesített kötetek megmaradnak. A -v kapcsolóval viszont a kötetek is törlődnek. Ez az adatok végleges elvesztésével jár.
Mi a különbség a stop és a down között?
A stop csak leállítja a szolgáltatásokat, a konténerek megmaradnak. A down eltávolítja a konténereket és a hálózatokat is. Mindkettő megtartja a nevesített köteteket. Az újraindítás ezért adatvesztés nélkül megy.
Hogyan ellenőrzöm a compose.yaml fájlt futtatás előtt?
Használd a docker compose config parancsot. Kiírja a feldolgozott, kanonikus beállítást. Látod benne a behelyettesített változókat is. A hibás értékeket így még indítás előtt észreveszed.
Hogyan várja meg a web a redis szolgáltatást?
Adj a redis szolgáltatásnak egészségellenőrzést. A webnél használd a depends_on kulcsot a condition: service_healthy feltétellel. A Compose csak az ellenőrzés sikere után indítja a webet. Az időzítést a saját szolgáltatásodhoz igazítsd.
Milyen néven keresi a Compose a konfigurációs fájlt?
A Compose alapból a munkakönyvtárban keresi a fájlt. A dokumentáció szerint az ajánlott név a compose.yaml. A compose.yml is működik. A régi docker-compose.yaml és docker-compose.yml név visszafelé kompatibilitásból támogatott.
Mire való a .env fájl a Compose-ban?
A Compose a mellette lévő .env fájlt automatikusan beolvassa. A gyorsindító ebből veszi a ${APP_PORT} értékét. Így a portot nem kell beleírni a compose.yaml fájlba. Az érték behelyettesítését a docker compose config paranccsal ellenőrizheted.
Szerző: a Linuxinfok szerkesztősége. Utolsó frissítés: 2026-11-10. A parancsok a hivatalos dokumentáció alapján készültek, futtatás előtt ellenőrizd az aktuális oldalt.
Források és referenciák
- Docker dokumentáció: Hogyan működik a Compose
- Docker dokumentáció: Compose gyorsindító
- Docker Compose parancssori referencia
- Kép forrás: Pexels.com