Гайдлайн по описанию микросервисов в docker-compose

Я все больше работаю с docker-compose и для того чтобы везде все было одинаково я решил записать правила о том как описывать микросервисы.

Программа docker-compose берет настройки из файла docker-compose.yml Формат этого файла, как понятно из расширения, — YAML.

Вот пример описания микросервиса в файле docker-compose.yml:

api:
  build: api/
  links:
   - db
  environment:
    - STAGE=dev
  volumes:
    - ./api/bin/:/app/bin/
    - ./api/lib/:/app/lib/
  ports:
   - "80:80"

В соответствии с этим гайдом, первая строка описания микросервиса — это его имя. Имя всегда пишется в нижнем регистре. Первый символ — это обязательно буква, остальные симолы могут быть a-z0-9_ Последний символ имени не должен быть подчеркиванием.

После имени микросервиса обязательно должнен быть параметр "build" или "image", информация об образе из которого работает микросервис.

После информации об образе идут опциональные параметры (но обязательно в этом порядке):

Сначала идут параметры, которые работают внутри (build/image, links, environment), а потом идут параметры, которые торчат наружу из контейнера (volumes, ports).

Далеко не для каждого микросервиса нужны все эти параметры. Если какие-то параметры не нужны, то их записать не надо, но для оставшихся параметров нужно сохранять такой же порядок.

Полный список всех параметров есть на странице документации. Этот гайд позволяет использовать только явно перечисленные в этом гайде параметры.

К гайду не относится, но хочу записать небольшой комментарий про формат параметров volumes и ports. Эти параметры делают разные вещи, но формат у них совершенно одинаковый — сначала указывается папка/порт на хост машине, а после двоеточия — папка/порт в контенере.

Иван Бессарабов
ivan@bessarabov.ru

23 сентября 2015