
Docker Compose — это инструмент, позволяющий создавать и управлять многоконтейнерными Docker-приложениями. Он использует YAML-файл для настройки служб, сетей и томов приложения.
Compose можно использовать для различных целей. Наиболее популярные варианты использования Docker Compose — развёртывание приложений на одном хосте, автоматическое тестирование и локальная разработка.
В этом руководстве мы покажем вам, как установить последнюю версию Docker Compose в Ubuntu 18.04, а также изучим основные концепции и команды Docker Compose.
Те же инструкции применимы для Ubuntu 16.04 и любого другого дистрибутива на базе Debian, включая Debian, Linux Mint и Elementary OS.
Предпосылки
Прежде чем продолжить изучение этого руководства, убедитесь, что выполнены следующие предварительные условия:
- Выполнен вход как пользователь с привилегиями sudo .
- Установите Docker, следуя инструкциям из статьи «Как установить и использовать Docker в Ubuntu 18.04» .
Установка Docker Compose в Ubuntu
Установочный пакет Docker Compose доступен в официальных репозиториях Ubuntu 18.04, но его версия может быть не всегда последней. Рекомендуется установить Docker Compose из репозитория Docker на GitHub.
На момент написания этой статьи последней стабильной версией Docker Compose была версия 1.23.1 . Перед загрузкой исполняемого файла Compose посетите страницу релиза репозитория Compose на GitHub и проверьте, доступна ли новая версия для загрузки.
Чтобы установить Docker Compose в Ubuntu 18.04, выполните следующие действия:
-
Загрузите двоичный файл Docker Compose в каталог
/usr/local/binс помощью следующей командыcurl:sudo curl -L "https://github.com/docker/compose/releases/download/1.23.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose -
После завершения загрузки примените права на исполнение к двоичному файлу Compose:
sudo chmod +x /usr/local/bin/docker-compose -
Проверьте установку, выполнив следующую команду, которая отобразит версию Compose:
docker-compose --versionВывод будет выглядеть примерно так:
docker-compose version 1.23.1, build b02f1306
Начало работы с Docker Compose
В этом разделе мы покажем, как использовать Docker Compose для настройки многоконтейнерного приложения WordPress в Ubuntu 18.04.
Начните с создания каталога проекта и перехода в него:
mkdir my_appcd my_app
Запустите текстовый редактор и создайте файл с именем docker-compose.yml внутри каталога проекта:
nano docker-compose.yml
Вставьте следующее содержимое:
docker-compose.yml
version : '3.3' services : db : image : mysql:5.7 restart : always volumes : - db_data:/var/lib/mysql environment : MYSQL_ROOT_PASSWORD : password MYSQL_DATABASE : wordpress wordpress : image : wordpress restart : always volumes : - ./wp_data:/var/www/html ports : - "8080:80" environment : WORDPRESS_DB_HOST : db:3306 WORDPRESS_DB_NAME : wordpress WORDPRESS_DB_USER : root WORDPRESS_DB_PASSWORD : password depends_on : - db volumes : db_data : wp_data :
Давайте проанализируем код строка за строкой.
В первой строке мы указываем версию файла Compose . Существует несколько различных версий формата файла Compose, поддерживающих определённые версии Docker.
Далее мы определяем две службы: db и wordpress . Каждая служба запускает один образ и создаёт отдельный контейнер при запуске docker-compose.
Служба db :
- Использует образ
mysql:5.7. Если образ отсутствует в системе, он будет загружен из публичного репозитория Docker Hub. - Использует политику «restart
always, которая предписывает контейнеру всегда перезапускаться. - Создает именованный том
db_data, чтобы сделать базу данных постоянной. - Определяет переменные среды для образа
mysql:5.7.
Сервис wordpress :
- Использует образ
wordpress. Если образ отсутствует в вашей системе, Compose загрузит его из публичного репозитория Docker Hub. - Использует политику «restart
always, которая предписывает контейнеру всегда перезапускаться. - Монтирует каталог
wp_dataна хосте в/var/lib/mysqlвнутри контейнера. - Перенаправляет открытый порт 80 на контейнере на порт 8080 на хост-машине.
- Определяет переменные среды для изображения
wordpress. - Инструкция
depends_onопределяет зависимость между двумя службами. В этом примереdbбудет запущена доwordpress.
Из каталога проекта запустите приложение WordPress, выполнив следующую команду:
docker-compose up
Вывод должен выглядеть примерно так:
... wordpress_1 | [Sun Sep 23 22:31:43.499055 2018] [mpm_prefork:notice] [pid 1] AH00163: Apache/2.4.25 (Debian) PHP/7.2.10 configured -- resuming normal operations wordpress_1 | [Sun Sep 23 22:31:43.499796 2018] [core:notice] [pid 1] AH00094: Command line: 'apache2 -D FOREGROUND'
Compose извлечет оба изображения, запустит два контейнера и создаст каталог wp_data в каталоге вашего проекта.
Введите http://0.0.0.0:8080/ в своем браузере, и вы увидите экран установки WordPress.
На этом этапе приложение WordPress готово к работе, и вы можете начать работу над своей темой или плагином.
Чтобы остановить создание сообщения, нажмите CTRL+C .
Вы также можете запустить Compose в отсоединенном режиме, передав флаг -d .
docker-compose up -d
Для проверки запущенных служб используйте опцию ps :
docker-compose ps
Name Command State Ports ---------------------------------------------------------------------------------- my_app_db_1 docker-entrypoint.sh mysqld Up 3306/tcp, 33060/tcp my_app_wordpress_1 docker-entrypoint.sh apach ... Up 0.0.0.0:8080->80/tcp
Когда Compose работает в отсоединенном режиме, для остановки служб используйте:
docker-compose stop
Если вы хотите полностью удалить контейнеры, используйте опцию down :
docker-compose down
Передача ключа --volumes также удалит тома данных:
docker-compose down --volumes
Удаление Docker Compose
Если по какой-либо причине вы хотите удалить Docker Compose, вы можете просто удалить двоичный файл, введя:
sudo rm /usr/local/bin/docker-compose
Заключение
Вы узнали, как установить и использовать Docker Compose в Ubuntu 18.04.
Использование Docker Compose может значительно улучшить ваш рабочий процесс и производительность. С помощью Docker Compose вы можете определить свою среду разработки и предоставить к ней доступ участникам проекта.
Если у вас есть вопросы, пожалуйста, оставьте комментарий ниже.
docker ubuntu Не используете Ubuntu 18.04?
Выберите другую ОС: центос 7 дебиан 10 дебиан 9 убунту 20.04
Связанные руководства