MEAN-stack и Docker. Часть 2 - Docker Compose

Вторая часть цикла, посвященного контейнеризации MEAN-stack приложений, в которой мы познакомимся с Docker Compose - инструментом для конфигурирования и запуска мультиконтейнерных приложений Docker.

Содержание цикла

В предыдущей части мы создали Docker-образы сервера и клиента приложения. Теперь нам нужно поднять базу данных. Можно воспользоваться все той же командой docker run. Но каждый раз запускать по отдельности все сервисы одного мультиконтейнерного приложения как-то утомительно. Хочется написать один файл конфига и запускать его одной командой. Как раз для этих целей и необходим инструмент Docker Compose. Он позволяет сконфигурировать работу сервисов (читай контейнеров) приложения в YAML-файле. Создадим этот файл.

docker-compose.yml

# Версия формата compose файла
version: "3"

services:

  # Серверное приложение
  server:

    # Можно собрать образ из Docerfile
    # build: ./server

    # Но у нас есть репозиторий. Берем образ из него
    image: myusername/public:mean-docker-server

    # Дать доступ на порту 3000
    ports:
      - "3000:3000"

    # Перезапускать сервис после падения
    restart: on-failure

    # Запускать сервис только после запуска сервиса db
    depends_on:
      - db

    # Путь к mongoDB по имени сервиса (db). docker - имя базы
    environment:
      - "db:uri=mongodb://db/docker"

    # Подключиться к сети db-net
    networks:
      - db-net


  # Клиентское приложение
  client:
    image: myusername/public:mean-docker-client
    ports:
      - "4000:4000"
    restart: on-failure
    depends_on:
      - server


  # База данных
  db:
    image: mongo
    restart: on-failure
    networks:
      - db-net


# Создаем сеть
networks:
  db-net:

Основные команды

Запуск сервисов

docker-compose up -d

Параметр -d указывает запустить в фоновом режиме.

Масштабирование сервисов

docker-compose up --scale server=2 --scale client=3

Логи

docker-compose logs

Запущенные процессы

docker-compose top

Остановка и удаление контейнеров

docker-compose down

Другие команды

docker-compose help

После запуска серверное приложение доступно на порту 3000. По сети докера оно подключается к базе данных. Однако клиентское приложение, хоть и открывается в браузере на localhost:4000, но не имеет доступа к серверному api. Для этого требуется настроить реверс прокси сервер, чем мы и займемся в следующей части.

Код проекта на GitHub >>

Часть 3 - Traefik reverse proxy >>

Павел Прудников

Постигающий дзен фулстэк вэб буддизма

Минск, Беларусь

Подписаться на Блог MEAN stack разработчика

Получайте свежие записи прямо на ваш почтовый ящик.

Или подпишитесь на RSS с Feedly!

Комментарии

comments powered by Disqus