Docker Compose je nástroj, který můžete použít k centrální správě nasazení mnoha různých kontejnerů Docker. Je to důležitý nástroj pro jakoukoli aplikaci, která potřebuje více mikroslužeb, protože umožňuje, aby každá služba byla snadno v odděleně spravovaném kontejneru.
Co dělá Docker Compose?
Docker kontejnery se používají pro spouštění aplikací v izolovaném prostředí. V současné době je zcela běžné vidět nasazení aplikací prováděné v Dockeru pro četné výhody, které přináší. Často to však není tak jednoduché, jako jen provozovat jeden kontejner. Obvykle můžete mít mnoho kontejnerů spojených dohromady, aby fungovaly jako jedna soudržná služba složená z mnoha pohyblivých částí.
Správa toho všeho v době nasazení je komplikovaná, takže k vyčištění poskytuje Docker Docker Compose, konfigurační nástroj používaný pro spouštění více kontejnerů najednou. Můžete definovat veškerou konfiguraci v jednom souboru YAML a poté spustit všechny kontejnery jedním příkazem.
Spíše než mít všechny své služby v jednom velkém kontejneru vám Docker Compose umožňuje rozdělit je do samostatně spravovatelných kontejnerů. To je lepší pro sestavení i nasazení, protože je můžete všechny spravovat v samostatných kódových základnách a nemusíte ručně spouštět každý jednotlivý kontejner.
Použití Docker Compose se skládá ze tří kroků:
- Vytvořte obrazy komponent pomocí jejich souborů Docker nebo je vytáhněte z registru.
- Definujte všechny služby komponent v
docker-compose.yml
soubor. - Spusťte je všechny společně pomocí
docker-compose
CLI.
Docker Compose není jiný druh Dockerfile. Stále budete muset vytvořit a publikovat své kontejnery Docker pomocí souboru Dockerfile. Místo jejich přímého spouštění však můžete použít Docker Compose ke správě konfigurace nasazení s více kontejnery.
Jak používáte Docker Compose?
Konfigurace souboru docker compose se provádí v docker-compose.yml
. Nemusíte to umisťovat do kořenového adresáře svého projektu jako Dockerfile. Ve skutečnosti může jít kamkoli, protože nezávisí na žádném jiném kódu. Pokud však vytváříte obrázky lokálně, bude nutné je uložit do složky projektu s vytvářeným kódem.
Konfigurační soubor Compose bude vypadat asi takto. Tato konfigurace spouští instanci WordPress pomocí wordpress
kontejner mimo Docker Hub. To však závisí na databázi MySQL, kterou také vytváří Compose.
version: '3' services: db: image: mysql:5.7 volumes: - db_data:/var/lib/mysql restart: always environment: MYSQL_ROOT_PASSWORD: rootpasswordchangeme MYSQL_DATABASE: wordpress MYSQL_USER: usernamechangeme MYSQL_PASSWORD: passwordchangeme wordpress: depends_on: - db image: wordpress:latest ports: - "8000:80" restart: always environment: WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_USER: usernamechangeme WORDPRESS_DB_PASSWORD: passwordchangeme volumes: db_data:
Podívejme se na formát tohoto souboru. Nejprve číslo verze, protože syntaxe se může měnit v závislosti na verzi, kterou používáte.
Dále seznam Služeb. První se jmenuje „db“ a používá mysql:5.7
kontejner, nastavte na vždy restartování a pomocí proměnných prostředí nakonfigurujte databázi pomocí uživatele a hesla. Aby byla zachována data po restartování, je tento obraz nakonfigurován se svazkem Docker připojeným k datovému adresáři MySQL.
Další službou je „wordpress“, která závisí na databázové službě a zajišťuje, že Docker se před spuštěním ujistí, že je databáze spuštěna. Vystavuje port 80 jako port 8000 a nastavuje některé proměnné prostředí, aby se mohl připojit k MySQL. Všimněte si, že hostitel pro databázi je nastaven na db:3306
, který říká kontejneru WordPress, aby se připojil ke službě „db“.
Nakonec jsou svazky definovány pro trvalé úložiště. Volitelně můžete také definovat vlastní síť pro kontejnery. Existuje spousta rozšířených možností, které můžete nakonfigurovat, takže pokud chcete udělat něco konkrétního, měli byste se podívat do dokumentace k Docker Compose.
Po konfiguraci je spuštění této služby snadné. Jednoduše spusťte docker-compose up
, který vytáhne všechny požadované kontejnery a spustí vaše služby.
docker-compose up -d
A měli byste vidět služby spuštěné v systému pomocí docker ps
. V tomto případě uvidíte, že WordPress funguje správně.
SOUVISEJÍCÍ: Jak nainstalovat Docker a Docker Compose v systému Linux
Vytváření pomocí Docker Compose
Docker Compose lze také použít v rámci projektu Dockerfile a lze jej nastavit tak, aby vytvořil a spouštěl bitovou kopii lokálně namísto stahování z centra Docker.
Chcete-li tak učinit, stačí přidat build
sekce o službě. Můžete nastavit různé kontextové adresáře, stejně jako různé Dockerfiles pro různé obrázky.
version: "3.8" services: webapp: build: context: ./dir dockerfile: Dockerfile-alternate image: imagename:tag
V tomto případě image:
je také nastavena proměnná, ale zde se používá k označení obrázku vytvořeného aplikací Docker Compose.