Docker Compose — это мощный и популярный инструмент, используемый для управления и развертывания приложений на основе Docker. Он позволяет определять, настраивать и запускать несколько Docker контейнеров как единый проект, упрощая развертывание приложений и обеспечивая согласованность между средами разработки и производственной средой.
Ниже приведены некоторые концепции и примеры Docker Compose:
Определите проект с помощью файла docker-compose.yml.
В docker-compose.yml
файле вы можете определить службы, необходимые для вашего приложения. Например, чтобы развернуть веб-приложение PHP с базой данных MySQL, вы можете определить две службы следующим образом:
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
В приведенном выше фрагменте кода мы определяем две службы: web
и db
. Служба web
будет использовать PHP 7.4 image с Apache, прослушивать порт 80 и монтировать ./app
каталог с хоста в /var/www/html
каталог в container. Служба db
будет использовать MySQL 5.7 image и установить некоторые переменные среды, необходимые для базы данных.
Использование Docker Compose команды
После того как вы определили проект в docker-compose.yml
файле, вы можете использовать Docker Compose команды для управления службами.
-
Запустите проект:
docker-compose up
Эта команда запустит контейнеры для служб, определенных в
docker-compose.yml
файле. -
Остановите и удалите контейнеры:
docker-compose down
Эта команда останавливает и удаляет все контейнеры, связанные с проектом.
-
Список запущенных контейнеров:
docker-compose ps
Эта команда отобразит состояние контейнеров в проекте.
-
Просмотр журналов службы:
docker-compose logs
Эта команда показывает журналы служб в проекте.
Переменные среды и настройка
Docker Compose позволяет использовать переменные среды для настройки конфигураций для различных сред, таких как разработка и производство. Вы можете использовать переменные среды в docker-compose.yml
файле и определять их значения в соответствующих .env
файлах.
Например, если вы хотите определить переменную среды для порта службы web
, вы можете добавить в файл строку, .env
подобную этой:
WEB_PORT=8080
Затем в docker-compose.yml
файле вы можете использовать эту переменную среды следующим образом:
version: "3"
services:
web:
image: php:7.4-apache
ports:
- "${WEB_PORT}:80"
volumes:
- ./app:/var/www/html
При выполнении docker-compose up
команды web
служба будет прослушивать порт 8080 вместо порта 80.
Интеграция с Docker Swam
Если вы хотите развернуть свое приложение в распределенной среде с несколькими узлами, Docker Compose вы можете интегрироваться с Docker Swarm. Это позволяет вам управлять службами на нескольких узлах в Docker кластере.
Чтобы использовать эту интеграцию, вам просто нужно добавить параметры --orchestrate
или --with-registry-auth
при запуске docker stack deploy
или docker-compose up
команды в Swarm среде.
Docker Compose — это полезный инструмент для простой и эффективной разработки, тестирования и развертывания приложений. Это сводит к минимуму различия между средами разработки и производства, обеспечивает согласованность процесса разработки программного обеспечения и повышает производительность групп разработчиков.