06.06.2023

Установка Docker Compose на CentOS 7

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.

Этапы установки Docker Compose

Зайдите на свой хост, содержащий Docker, и по порядку запустите команды, перечисленные ниже:

[root@dockerserver ~]# yum install epel-release -y
[root@dockerserver ~]# yum install python-pip -y
[root@dockerserver ~]# pip install docker-compose

Примечание

Для стабильной работы Docker Compose рекомендуем использовать менеджер пакетов pip версии 6.0 или выше. Если версия pip ниже 6.0, выполните команду для его обновления:

[root@dockerserver~] # pip install --upgrade pip

Проверьте версию Docker командой:

[root@dockerserver~]# docker-compose --version
docker-compose version 1.25.4, build 8d51620a
[root@dockerserver ~]#

Развертывание контейнеров инструментом Docker Compose

Создайте каталог и в нем же файл compose с именем «docker-compose.yml» или «docker-compose.yaml». В файле compose мы определим сервисы для приложений и образы контейнеров.

Прежде чем приступить к созданию compose-файла, скачайте образы контейнеров WordPress и MySQL:

[root@dockerserver ~]# docker pull wordpress
[root@dockerserver ~]# docker pull mysql
[root@dockerserver ~]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
wordpress latest d44c65e8e9a3 9 days ago 540MB
mysql latest 9b51d9275906 3 weeks ago 547MB

Затем создайте каталог с именем «siteonwordpress»:

[root@dockerserver ~]# mkdir siteonwordpress
[root@dockerserver ~]# cd siteonwordpress/
[root@dockerserver siteonwordpress]#

Далее создайте файл docker-compose.yml с перечисленным содержимым:

version: '3.0'
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, с помощью команды:

[root@docker-host siteonwordpress]# docker-compose up

Примечание

Выполнять запуск «docker-compose up» следует из каталога, в котором находится файл docker-compose.

Команда выше развернет два контейнера с именами «wp_cont» и «wordpressdb_cont». Попробуйте получить доступ к своему сайту WordPress, используя следующий URL:

http://{dockerserver-ip}:8080

Следуйте инструкциям на экране, чтобы завершить установку WordPress. Это подтверждает, что сайт WordPress был успешно развернут внутри контейнеров благодаря использованию утилиты docker-compose.

Далее рассмотрим параметры команды «docker-compose».

Вывод контейнеров, развернутых для нашего приложения

Для вывода выполните следующую команду:

[root@dockerserver siteonwordpress]# docker-compose ps
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
[root@dockerserver siteonwordpress]#

Остановка и запуск контейнеров и их служб

Можно нажать Ctrl+C во время выполнения «docker-compose up» или выполнить команду:

[root@dockerserver siteonwordpress]# docker-compose stop
Stopping wp_cont ... done
Stopping wordpressdb_cont ... done
[root@dockerserver siteonwordpress]#

Выполните команду «docker-compose start», чтобы запустить контейнеры и их службы:

[root@dockerserver siteonwordpress]# docker-compose start
Starting databaseserver ... done
Starting frontserver ... done
[root@dockerserver siteonwordpress]#

Просмотр журналов контейнеров

Чтобы просмотреть журналы контейнеров и журналы определенного контейнера, запустите команду «docker-compose logs {service-name}»:

[root@dockerserver siteonwordpress]# docker-compose logs
[root@dockerserver siteonwordpress]# docker-compose logs databaseserver

Остановить и удалить контейнеры вместе с созданной сетью

С помощью команды «docker-compose down» можно останавливать и удалять контейнеры, выполняя всего одну команду:

[root@dockerserver siteonwordpress]# docker-compose down
Stopping wp_cont ... done

Stopping wordpressdb_cont ... done
Removing wp_cont ... done
Removing wordpressdb_cont ... done
Removing network compose_default
[root@dockerserver siteonwordpress]#

Дополнительные параметры можно узнать в разделе помощи, выполнив команду «docker-compose –help».