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