Docker Compose alapok: egy fájl, több szolgáltatás

Docker Compose alapok: egy fájl, több szolgáltatás

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 -d háttérben indítja a szolgáltatásokat.
  • A docker compose down törli a konténereket, a köteteket nem.
  • A down -v a 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.

Utolsó frissítés: 2026-11-10
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