Docker-compose#
Docker Compose позволяет управлять набором контейнеров, каждый из которых представляет собой сервис приложения. Управление включает в себя сборку, запуск с учетом зависимостей и конфигурацию. Конфигурация Docker Compose описывается в файле docker-compose.yml, лежащем в корне проекта.
Установка#
для установки docker-compose следует перейти в интерфейс командной строки и выполнить:
sudo apt install docker-compose
Пример работы с docker-compose#
Пункт 1#
создайте в каталоге файл Dockerfile:
sudo nano Dockerfile
Пункт 2#
скопируйте следующий текст в Dockerfile:
# указание из какого образа выполнять сборку
FROM registry.astralinux.ru/library/astra/ubi18-apache24:latest
# вывести на печать рабочий каталог
RUN echo Current work directory is $(pwd)
Пункт 3#
создайте в каталоге файл docker-compose.yml:
sudo nano docker-compose.yml
Пункт 4#
скопируйте следующий текст в docker-compose.yml:
version: "3" # версия схемы (зависит от установленной версии docker)
services: # список сервисов приложения
app: # имя сервиса
build:
context: . # контекст для сборки образа
dockerfile: Dockerfile # имя Docker-файла, из которого будет собран образ
ports: # проброс портов, внешний:внутренний
- "8080:80"
volumes: # список томов, подключаемые к файловой системе сервиса
- "/tmp:/tmp" # директория tmp пробрасывается в директорию tmp внутри контейнера, местоположение директории на стороне сервиса указывается после ":"
depends_on: # указание требуемых запущенных сервисов
- ubi18
ubi18: # имя сервиса
image: registry.astralinux.ru/library/astra/ubi18:latest #базовый образ системы
command: sleep infinity #чтобы контейнер не завершился сразу
Пункт 5#
для сборки сервисов, описанных в конфигурационных файлах docker-compose.yml и Dockerfile, используем команду:
docker-compose build
Пункт 6#
запуск собранных сервисов (для запуска в фоновом режиме нужно использовать параметр -d):
docker-compose up
Пункт 7#
откройте любой браузер на хостовой машине и введите http://localhost:8080, должна отобразиться стартовая страница веб-сервера Apache2
Пункт 8#
остановка и удаление всех сервисов, которые были запущены с помощью up производится командой:
docker-compose down
Дополнительные команды для работы с docker-compose#
Запуск приложения с остановкой всех сервисов при завершении работы какой-либо сервиса:
docker-compose up --abort-on-container-exit
Запуск сервиса и подключение к нему с помощью bash:
docker-compose run app bash
С флагом –rm запускаемые контейнеры будут автоматически удаляться после завершения:
docker-compose run --rm app bash
Остановка без удаления сервисов, запущенных с помощью up:
docker-compose stop
Примечание
Запустить остановленные контейнеры снова можно с помощью команды docker-compose start.
Перезапуск всех остановленных и запущенных сервисов:
docker-compose restart