Docker Compose: Podstawy i użycie

Docker Compose jest potężnym i popularnym narzędziem służącym do zarządzania i wdrażania aplikacji opartych na Docker. Pozwala definiować, konfigurować i uruchamiać wiele Docker kontenerów jako jeden projekt, upraszczając wdrażanie aplikacji i zapewniając spójność między środowiskami programistycznymi i produkcyjnymi.

Poniżej przedstawiono kilka koncepcji i przykładów Docker Compose:

Zdefiniuj projekt przy użyciu pliku docker-compose.yml

W docker-compose.yml pliku możesz zdefiniować usługi wymagane dla Twojej aplikacji. Na przykład, aby wdrożyć aplikację internetową PHP z bazą danych MySQL, możesz zdefiniować dwie usługi w następujący sposób:

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  

W powyższym fragmencie kodu definiujemy dwie usługi: web oraz db. Usługa web użyje PHP 7.4 image z Apache, nasłuchuje na porcie 80 i zamontuje ./app katalog z hosta do /var/www/html katalogu w container. Usługa db użyje MySQL 5.7 image i ustawi niektóre zmienne środowiskowe wymagane dla bazy danych.

 

Używanie Docker Compose polecenia

Po zdefiniowaniu projektu w docker-compose.yml pliku możesz używać Docker Compose poleceń do zarządzania usługami.

  • Rozpocznij projekt: docker-compose up

    To polecenie uruchomi kontenery dla usług zdefiniowanych w docker-compose.yml pliku.

  • Zatrzymaj i wyjmij pojemniki: docker-compose down

    To polecenie zatrzymuje i usuwa wszystkie kontenery związane z projektem.

  • Wyświetl listę uruchomionych kontenerów: docker-compose ps

    To polecenie wyświetli status kontenerów w projekcie.

  • Wyświetl dzienniki usługi: docker-compose logs

    To polecenie wyświetla dzienniki usług w projekcie.

 

Zmienne środowiskowe i dostosowywanie

Docker Compose umożliwia używanie zmiennych środowiskowych do dostosowywania konfiguracji dla różnych środowisk, takich jak programowanie i produkcja. Możesz użyć zmiennych środowiskowych w docker-compose.yml pliku i zdefiniować ich wartości w odpowiednich .env plikach.

Na przykład, jeśli chcesz zdefiniować zmienną środowiskową dla portu usługi web, możesz dodać linię do .env pliku w następujący sposób:

WEB_PORT=8080

Następnie w docker-compose.yml pliku możesz użyć tej zmiennej środowiskowej w następujący sposób:

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

Po uruchomieniu docker-compose up polecenia web usługa będzie nasłuchiwać na porcie 8080 zamiast na porcie 80.

 

Integracja ze Docker Swamem

Jeśli chcesz wdrożyć swoją aplikację w środowisku rozproszonym z wieloma węzłami, Docker Compose możesz zintegrować z platformą Docker Swarm. Pozwala to na zarządzanie usługami w wielu węzłach w Docker klastrze.

Aby skorzystać z tej integracji, wystarczy dodać opcje --orchestrate lub --with-registry-auth podczas uruchamiania docker stack deploy lub docker-compose up poleceń w Swarm środowisku.

 

Docker Compose to przydatne narzędzie do łatwego i wydajnego tworzenia, testowania i wdrażania aplikacji. Minimalizuje różnice między środowiskami programistycznymi i produkcyjnymi, zapewnia spójność procesu tworzenia oprogramowania i zwiększa produktywność zespołów programistycznych.