Docker-compose to przydatne narzędzie do orkiestracji wielokontenerowych aplikacji Docker. Pozwala uruchamiać aplikacje w oparciu o plik YAML. Te pliki to lista instrukcji określających parametry uruchamianych aplikacji.
W naszym przykładzie uruchomimy dwa kontenery – bazę danych MySQL i podstawową aplikację internetową WordPress.
Pliki tworzenia dockera mogą wyglądać tak:
version: '3.3'
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- "8000:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_NAME: wordpress
volumes:
db_data: {}
Do zarządzania kontenerami możemy użyć kilku podstawowych poleceń docker-compose:
Zbuduj lub przebuduj serwisy
docker-compose build
Stwórz i uruchom kontenery
docker-compose up
Jak widać, kontenery zostały uruchomione, a logi wydrukowane na konsoli. Aby uruchomić w tle, użyj parametru -d.
Uruchom jednorazową komendę w serwisie
docker-compose run
ex: docker-compose run wordpress
Możesz dla przykładu wydrukować wersję Debiana kontenera WordPress.
Pokaż listę uruchomionych kontenerów
docker ps
Polecenie docker ps pokazuje:
Wydrukuj listę informacji o uruchomionych kontenerach z bieżącego pliku docker-compose.yaml
docker-compose ps
Pokaż wszystkie logi w kontenerze od jego uruchomienia
docker logs <service>
Zatrzymaj i usuń kontenery, sieci, woluminy i obrazy utworzone za pomocą polecenia „up”
docker-compose down
Zabij jeden lub więcej działających kontenerów
docker kill <container_id>
Pokaż listę obrazów
docker images
Wykonaj polecenie w działającym kontenerze
docker exec <service> <bash_command>
Usuń wszystkie nieużywane dane
docker system prune
Zabij wszystkie uruchomione kontenery
docker kill $(docker ps -q)
Zatrzymaj wszystkie uruchomione kontenery
docker stop $(docker ps -q)
Usuń wszystkie obrazy
docker rmi $(docker images -q)
Usuń wszystkie kontenery
docker rm $(docker container ps -q)
Docker-compose to przydatne i łatwe narzędzie do zarządzania wieloma kontenerami. Możesz zdecydować, w jaki sposób kontenery są rozdzielone, z jakich zasobów mogą korzystać i jak się ze sobą komunikują. Możesz także ustawić, co ma się stać, jeśli zmieni się status jednego z kontenerów. Ta funkcja umożliwia automatyczne przywrócenie stanu systemu.