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.