Tartalomjegyzék
🧾 Docker Compose
👓 Áttekintés
Eddig minden 🐳 Docker konténert egy hosszú docker run paranccsal indítottunk.
De mi van, ha például egy weboldalhoz kell egy webszerver, egy adatbázis és egy PHP feldolgozó is? Három külön terminálablakban futtatnánk őket? Hogyan beszélgetnek egymással?
Erre a Docker Compose a megoldás. Ez az „Infrastructure as Code” (IaC) alapja: ahelyett, hogy parancsokat gépelnénk, egy szöveges fájlban (compose.yaml) írjuk le, hogyan nézzen ki a rendszerünk.
Előnyei:
- Reprodukálható: A fájlt átküldöd a társadnak, beírja, hogy
docker compose up, és ugyanaz fut nála is. - Átlátható: Egy fájlban látod a teljes architektúrát.
- Hálózatkezelés: Automatikusan létrehoz egy belső hálózatot, ahol a konténerek a nevük alapján megtalálják egymást.
📥 Telepítés
# Ha már telepítetted a dockert. sudo apt install docker-compose-v2 -y # Dockerrel együtt sudo apt install docker.io docker-compose-v2 -y
⚙️ Konfiguráció
A Docker Compose YAML formátumot használ (fontos a behúzás/indentálás!).
Hozz létre egy mappát, benne egy compose.yaml fájllal. Egy tipikus compose.yaml fájl szerkezete:
services: # Itt soroljuk fel a konténereket webszerver: # 1. szolgáltatás neve (ez lesz a hálózati neve is!) image: nginx # Miből készüljön? ports: - "8080:80" # Port átirányítás (Host:Container) adatbazis: # 2. szolgáltatás neve image: mysql environment: # Környezeti változók MYSQL_ROOT_PASSWORD: titkosjelszo
👨🏼💻 Legfontosabb parancsok
A parancsokat abban a könyvtárban kell kiadni, ahol a compose.yaml (vagy régebben docker-compose.yml) fájl van.
| Parancs | Leírás |
|---|---|
docker compose up -d | Elindítja a rendszert a háttérben (Detached). Ha nincs meg az image, letölti. |
docker compose down | Leállítja és törli a konténereket és a hálózatot. |
docker compose stop | Csak megállítja a konténereket (nem törli őket). |
docker compose ps | Listázza az éppen futó szolgáltatásokat. |
docker compose logs -f | Folyamatosan mutatja az összes konténer logját (kilépés: Ctrl+C). |
docker compose exec [service] bash | Belépés egy futó konténerbe (pl. docker compose exec webszerver bash). |
Régebbi Docker verzióknál a parancs docker-compose (kötőjellel). Az új verziókban már a docker compose (szóközzel) az ajánlott.
📜 Néhány bevett gyakorlat
Jelszavak kezelése (.env fájl)
Soha ne írj jelszavakat közvetlenül a YAML fájlba, ha azt git-ben vagy megosztott helyen tárolod! Használj .env fájlt.
1. Hozz létre egy .env fájlt:
DB_USER=wordpress DB_PASSWORD=szupertitkos
2. Hivatkozz rá a compose.yaml-ben:
environment: MYSQL_USER: ${DB_USER} MYSQL_PASSWORD: ${DB_PASSWORD}
Adatok megőrzése
Ha törlöd a konténert (down), az adatbázis tartalma is elveszik, hacsak nem használsz Volume-okat.
services: db: image: mysql volumes: - db_data:/var/lib/mysql # elnevezett Volume használata volumes: db_data: # Itt kell deklarálni a volume-ot
🥣 Kész Docker Compose fájlok
| Oldal | Leírás | Címkék |
|---|---|---|
| Adminer + MariaDB Stack 🧾 Docker Compose recept MariaDB és Adminer webes kezelőfelület közös futtatására: két konténer, ami automatikusan látja egymást. 🥣 Elk… | docker-compose, tutorial | |
| Portainer 🧾 Docker Compose recept egy 🐳 Docker felügyelő Portainer rendszerhez 🥣 Elkészítés Hozz létre egy mappát, benne egy compose.yaml fájllal: services… | docker-compose, tutorial | |
| WordPress + MySQL Stack 🧾 Docker Compose recept Wordpress és MySQL adatbázis közös futtatására: két konténer, ami automatikusan látja egymást. 🥣 Elkészítés H… | docker-compose, tutorial |
