Docker - это платформа для контейнеризации, которая позволяет быстро создавать, тестировать и развертывать приложения в виде переносимых самодостаточных контейнеров, которые могут работать практически где угодно.
Docker Compose - это инструмент, который позволяет определять и настраивать многоконтейнерные приложения Docker. Он использует файл YAML для настройки контейнеров, сетей и томов приложения.
Compose можно использовать для различных целей. Развертывание приложений с одним хостом, автоматическое тестирование и локальная разработка - самые популярные варианты использования Docker Compose.
Прежде чем приступить
Прежде чем продолжить, убедитесь, что вы выполнили следующие предварительные требования:
Установка Docker Compose на Debian 10
Установочный пакет Docker Compose доступен в официальных репозиториях Debian 10, но он не всегда может быть последней версией. Рекомендуемый подход - установить Docker Compose из репозитория Docker GitHub.
На момент написания этой статьи последней стабильной версией Docker Compose является версия 1.23.1 . Перед загрузкой двоичного файла Compose посетите страницу выпуска репозитория Compose на GitHub и проверьте, доступна ли для загрузки новая версия.
Выполните следующие действия, чтобы установить последнюю версию Docker Compose в Debian 10:
- Используйте 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
Вставьте следующий контент:
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. Строка, начинающаяся с, command отменяет команду по умолчанию.
- restart: always Политика инструктирует Compose перезапустить контейнер , если он идет вниз.
- Контейнер будет использовать именованный том db_data для сохранения базы данных.
- Определяет переменные среды для mysql:8.0 изображения.
wordpress :
- Монтирует wp_data каталог на хосте /var/lib/mysql внутри контейнера.
- Перенаправляет открытый порт 80 на контейнере на порт 8080 на хост-машине.
- 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 запущено и работает, и вы можете начать работать над ним.
Чтобы остановить создание, нажмите CTRL+C .
Вы также можете запустить Compose в автономном режиме, используя -d опцию:
docker-compose up -d
Чтобы просмотреть запущенные контейнеры докеров, используйте следующую команду:
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, просто загрузите двоичный файл в каталог на системном пути и сделайте его исполняемым.