Docker Compose: Základy a použití

Docker Compose je výkonný a oblíbený nástroj používaný pro správu a nasazení aplikací založených na Docker. Umožňuje definovat, konfigurovat a provozovat více Docker kontejnerů jako jeden projekt, zjednodušuje nasazení aplikací a zajišťuje konzistenci mezi vývojovým a produkčním prostředím.

Níže jsou uvedeny některé koncepty a příklady Docker Compose:

Definujte projekt pomocí souboru docker-compose.yml

V docker-compose.yml souboru můžete definovat služby požadované pro vaši aplikaci. Chcete-li například nasadit webovou aplikaci PHP s databází MySQL, můžete definovat dvě služby takto:

version: "3"  
services:  
  web:  
    image: php:7.4-apache  
    ports:  
   - "80:80"  
    volumes:  
   - ./app:/var/www/html  
  
  db:  
    image: mysql:5.7  
    environment:  
      MYSQL_ROOT_PASSWORD: password  
      MYSQL_DATABASE: my_database  

Ve výše uvedeném fragmentu kódu definujeme dvě služby: web a db. Služba web použije PHP 7.4 image s Apache, naslouchá na portu 80 a připojí ./app adresář z hostitele do /var/www/html adresáře v container. Služba db bude používat MySQL 5.7 image a nastaví některé proměnné prostředí požadované pro databázi.

 

Použití Docker Compose příkazu

Jakmile definujete projekt v docker-compose.yml souboru, můžete pomocí Docker Compose příkazů spravovat služby.

  • Spusťte projekt: docker-compose up

    Tento příkaz spustí kontejnery pro služby definované v docker-compose.yml souboru.

  • Zastavte a vyjměte nádoby: docker-compose down

    Tento příkaz zastaví a odstraní všechny kontejnery související s projektem.

  • Seznam běžících kontejnerů: docker-compose ps

    Tento příkaz zobrazí stav kontejnerů v projektu.

  • Zobrazit protokoly služeb: docker-compose logs

    Tento příkaz zobrazuje protokoly služeb v projektu.

 

Proměnné prostředí a přizpůsobení

Docker Compose umožňuje používat proměnné prostředí k přizpůsobení konfigurací pro různá prostředí, jako je vývoj a produkce. V souboru můžete použít proměnné prostředí docker-compose.yml a definovat jejich hodnoty v odpovídajících .env souborech.

Pokud například chcete definovat proměnnou prostředí pro port služby web, můžete do .env souboru přidat řádek takto:

WEB_PORT=8080

Pak v docker-compose.yml souboru můžete použít tuto proměnnou prostředí takto:

version: "3"  
services:  
  web:  
    image: php:7.4-apache  
    ports:  
   - "${WEB_PORT}:80"  
    volumes:  
   - ./app:/var/www/html  

Při spuštění docker-compose up příkazu web bude služba naslouchat na portu 8080 namísto portu 80.

 

Integrace s Docker Swam

Pokud chcete nasadit svou aplikaci v distribuovaném prostředí s více uzly, Docker Compose můžete se integrovat s Docker Swarm. To vám umožní spravovat služby napříč více uzly v Docker clusteru.

Chcete-li použít tuto integraci, stačí přidat možnosti --orchestrate nebo --with-registry-auth při spuštění docker stack deploy nebo docker-compose up příkazy v Swarm prostředí.

 

Docker Compose je užitečný nástroj pro snadný a efektivní vývoj aplikací, testování a nasazení. Minimalizuje rozdíly mezi vývojovým a produkčním prostředím, zajišťuje konzistenci v procesu vývoje softwaru a zvyšuje produktivitu vývojových týmů.