Docker – это платформа для контейнеризации, которая позволяет быстро создавать, тестировать и развертывать приложения в виде переносимых самодостаточных контейнеров, которые могут работать практически где угодно.
Docker Compose – это инструмент, который позволяет определять и организовывать мультиконтейнерные приложения Docker. Он использует YAML-файл для настройки контейнеров, сетей и томов приложения.
Compose может быть использован для различных целей. Развертывание приложений на одном хосте, автоматическое тестирование и локальная разработка – наиболее популярные варианты использования Docker Compose.
В этой статье объясняется, как установить последнюю версию Docker Compose на Debian 10, Buster. Мы также рассмотрим основные концепции и команды Docker Compose.
Предпосылки
Прежде чем продолжить, убедитесь, что вы выполнили следующие условия:
- Вы вошли как пользователь с привилегиями sudo.
- У вас установлен Docker на вашей машине Debian 10.
Установка Docker Compose в Debian 10
Установочный пакет Docker Compose доступен в официальных репозиториях Debian 10, но он не всегда может быть последней версией. Рекомендуемый подход – установить Docker Compose из хранилища Docker’s GitHub.
На момент написания этой статьи последней стабильной версией Docker Compose была версия 1.23.1. Перед загрузкой двоичного файла Compose перейдите на страницу выпуска Compose репозитория на GitHub и проверьте, доступна ли новая версия для загрузки.
Чтобы установить последнюю версию Docker Compose в Debian 10, выполните следующие действия:
- Загрузите двоичный файл Docker Compose в каталог /usr/local/bin с помощью команды wget или 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
- Используйте chmod для создания исполняемого двоичного файла Compose:
sudo chmod +x /usr/local/bin/docker-compose
- Чтобы проверить установку, используйте следующую команду, которая печатает версию Compose:
docker-compose --version
Вывод будет выглядеть примерно так:
docker-compose version 1.23.1, build b02f1306
Начало работы с Docker Compose
В этом разделе мы покажем, как настроить локальную среду разработки WordPress с помощью Docker Compose.
Создайте каталог для проекта и перейдите в него:
mkdir wordpress_app && cd wordpress_app
Откройте ваш текстовый редактор и создайте файл с именем docker-compose.yml:
nano docker-compose.yml
Вставьте следующий контент:
version: '3.7' services: db: image: mysql:8.0 command: --default-authentication-plugin=mysql_native_password 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:8.0. Если изображение отсутствует, Compose извлечет его из общедоступного хранилища Docker Hub. Строка, начинающаяся с переопределения команды по умолчанию.
- restart: Политика always инструктирует Compose перезапустить контейнер, если он идет вниз.
- Контейнер будет использовать именованный том db_data для сохранения базы данных.
- Определяет переменные среды для изображения mysql:8.0.
Обслуживание WordPress:
- Используется образ wordpress.
- Монтируем каталог wp_data на хосте /var/lib/mysql внутри контейнера.
- Пересылает открытый порт 80 на контейнере на порт 8080 на хост-компьютере.
- Определяет переменные среды для образа wordpress.
- Инструкция depends_on определяет зависимость между двумя службами. В этом примере db будет запущено раньше wordpress.
Из каталога проекта запустите стек WordPress, выполнив следующую команду:
docker-compose up
Вывод должен выглядеть примерно так:
... ] /usr/sbin/mysqld: ready for connections. Version: '8.0.18' socket: '/var/run/mysqld/mysqld.sock' port: 3306 MySQL Community Server - GPL. db_1_99946702ac7e | 2019-12-15T21:37:29.109255Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Socket: '/var/run/mysqld/mysqlx.sock' bind-address: '::' port: 33060 ...
Docker Compose извлечет изображения, запустит контейнеры и создаст каталог wp_data в каталоге вашего проекта.
Войдите http://0.0.0.0:8080/в свой браузер, и вы увидите стандартный экран установки WordPress.
На этом этапе приложение WordPress запущено и работает, и вы можете начать работать над ним.
Для остановки Compose нажмите CTRL+C.
Вы также можете запустить Compose в отдельном режиме, используя опцию -d:
docker-compose up -d
Для просмотра запущенных Docker-контейнеров используйте следующую команду:
docker-compose ps
Name Command State Ports ------------------------------------------------------------------------------------------------------ wordpress_app_db_1_99946702ac7e docker-entrypoint.sh --def ... Up 3306/tcp, 33060/tcp wordpress_app_wordpress_1_a428d8408817 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 на Debian 10, просто загрузите двоичный файл в каталог по системному пути и сделайте его исполняемым.
Если у вас есть какие-либо вопросы, пожалуйста, оставьте комментарий ниже.