Docker Compose — это инструмент командной строки для определения и настройки многоконтейнерных приложений Docker. Иначе говоря, Docker Compose используется для связывания нескольких контейнеров и развертывания приложения из одного файла. Инструмент Docker Compose может использоваться в среде разработки, тестирования и подготовки, и, кроме того, может быть легко использован в рабочем процессе CI (Continuous Integration).
Предположим, вам требуется развернуть сайт на WordPress внутри контейнера — для его развертывания потребуется один контейнер веб-сервера (Apache/Nginx) и один контейнер базы данных (MySQL/MariaDB). С помощью Docker Compose есть возможность легко включить несколько контейнеров в файл docker-compose, а также любую другую конфигурацию, которая требуется для полноценной работы приложения.
В этой инструкции будет разобран процесс установки Docker Compose на существующий хост, содержащий Docker, а также будет затронута тема развертывания контейнеров командой docker-compose.
Предполагается, что хост с Docker уже настроен и работает. Перейдем к этапам установки Docker Compose Tool.
Вы можете воспользоваться инструкцией или создать сервер в Serverspace с уже установленным приложением Docker.
Этапы установки Docker Compose
Отредактируем docker файл. Для этого выполним следующие команды:
Зайдите на свой хост, содержащий Docker, и по порядку запустите команды, перечисленные ниже:
Примечание
Для стабильной работы Docker Compose рекомендуем использовать менеджер пакетов pip версии 6.0 или выше. Если версия pip ниже 6.0, выполните команду для его обновления:
Установите Docker:
Проверьте версию Docker командой:
Результат:
docker-compose version 1.23.2, build 1110ad01
Развертывание контейнеров инструментом Docker Compose
Создайте каталог и в нем же файл compose с именем «docker-compose.yml» или «docker-compose.yaml». В файле compose мы определим сервисы для приложений и образы контейнеров.
Прежде чем приступить к созданию compose-файла, скачайте образы контейнеров WordPress и MySQL:
Результат:
REPOSITORY TAG IMAGE ID CREATED SIZE
wordpress latest d44c65e8e9a3 9 days ago 540MB
mysql latest 9b51d9275906 3 weeks ago 547MB
Затем создайте каталог с именем «siteonwordpress»:
Далее создайте файл docker-compose.yml с перечисленным содержимым:
services:
frontserver:
image: wordpress
container_name: wp_cont
ports:
- 8080:80
links:
- databaseserver:mysql
environment:
WORDPRESS_DB_PASSWORD: erf6UiwkzjTH
databaseserver:
image: mysql:latest
container_name: wordpressdb_cont
environment:
MYSQL_ROOT_PASSWORD: erf6UiwkzjTH
В приведенном выше файле compose были определены два сервиса с именами «frontserver» и «databaseserver». Для этих сервисов также указаны образы контейнера. Помимо этого были определены переменные среды и упомянуты пароли root mysql и db wordpress. Обращаем внимание, что отступы осуществляются пробелами, в соответствии с YAML-разметкой.
Давайте развернем наше приложение, то есть сайт на WordPress, с помощью команды:
Примечание
Выполнять запуск «docker-compose up» следует из каталога, в котором находится файл docker-compose.
Команда выше развернет два контейнера с именами «wp_cont» и «wordpressdb_cont». Попробуйте получить доступ к своему сайту WordPress, используя следующий URL:
Следуйте инструкциям на экране, чтобы завершить установку WordPress. Это подтверждает, что сайт WordPress был успешно развернут внутри контейнеров благодаря использованию утилиты docker-compose.
Далее рассмотрим параметры команды «docker-compose».
Вывод контейнеров, развернутых для нашего приложения
Для вывода выполните следующую команду:
Name Command State Ports
--------------------------------------------------------------------------------
wordpressdb_cont docker-entrypoint.sh mysqld Up 3306/tcp, 33060/tcp
wp_cont docker-entrypoint.sh apach ... Up 0.0.0.0:8080->80/tcp
Остановка и запуск контейнеров и их служб
Можно нажать Ctrl+C во время выполнения «docker-compose up» или выполнить команду:
Stopping wp_cont ... done
Stopping wordpressdb_cont ... done/code>
Выполните команду «docker-compose start», чтобы запустить контейнеры и их службы:
Starting databaseserver ... done
Starting frontserver ... done
Просмотр журналов контейнеров
Чтобы просмотреть журналы контейнеров и журналы определенного контейнера, запустите команду «docker-compose logs {service-name}»:
Остановить и удалить контейнеры вместе с созданной сетью
С помощью команды «docker-compose down» можно останавливать и удалять контейнеры, выполняя всего одну команду:
Stopping wp_cont ... done
Stopping wordpressdb_cont ... done
Removing wp_cont ... done
Removing wordpressdb_cont ... done
Removing network compose_default
Дополнительные параметры можно узнать в разделе помощи, выполнив команду «docker-compose –help».