anchor.diff:  == FIDM
  +//:source-highlighter: pygments
  +:toc: right
  +
  +:fidm:   https://github.com/LeKovr/fidm[FIDM]
  +:consup: https://github.com/LeKovr/consup[ConSup]
  +
   Управление контейнерами docker.
  -:toc:
  -
   
   == Установка
   
  
positive.code: 
  === Установка
  
  FIDM - это скрипт на bash. Для установки достаточно его скопировать в каталог из $PATH и дать права на запуск:
  
  -----
  FIDM_VER=0.1 && curl -o /usr/local/bin/fidm -SL https://github.com/LeKovr/fidm/releases/download/${FIDM_VER}/fidm.sh \
    && chmod +x /usr/local/bin/fidm
  -----
  
  
negative.code: Где: 
  
  COMMAND :: одна из
    build   ::: `docker build`
    start   ::: `docker run` или `docker start` для текущего и связанных контейнеров
    stop    ::: `docker stop` для текущего контейнера (`stop CONFIG all` - для текущего и связанных)
    rm      ::: `docker rm` для текущего контейнера (`rm CONFIG all` - для текущего и связанных)
    init    ::: создать пример файла конфигурации
  
  CONFIG    :: файл конфигурации в формате YML
  
  all       :: расширение действия команды на связанные контейнеры, используется в командах `stop` и `rm`
  
  var=value :: перезапись значений параметров {fidm} из файла конфигурации
  
  === Примеры
  
  [source,bash]
  .Выполнить `docker build` с аргументами из файла `postgres.yml`
  ----
  fidm build postgres
  ----
  
  .Выполнить `docker run` с аргументами из файла `pgws.yml` и задать контейнеру суффикс `dev`. Если такой контейнер уже есть, выполнить для него `docker start`
  ----
  fidm start pgws mode=dev
  ----
  
  .То же самое для файла `fidm.yml` (Префикс взять из конфига или ветки git)
  ----
  fidm start
  ----
  
  .Остановить контейнер из `modperl.yml` и все контейнеры, от которых он зависит
  ----
  fidm stop modperl all
  ----
  
  .То же самое для `fidm.yml`
  ----
  fidm stop fidm all
  ----
  
  === Конфигурация
  
  Конфигурация контейнеров размещается в файлах .yml. В одном файле NAME.yml содержатся настройки только одного контейнера (контейнер получает имя NAME). 
  
  * *Параметры fidm* - строковые значения, которые могут быть переназначены в командной строке {fidm} (var=value)
  * *Списки fidm* - списки связанных контейнеров, портов, каталогов. Могут быть заданы только в файле настроек
  * *Аргументы docker run* - значения без модификации передаются в вызов `docker run`
  
  Все параметры с их описаниями можно выгрузить в файл `NAME.yml` командой `fidm init NAME`.
  
  === Быстрый старт
  
  Для примера используем контейнеры из проекта {consup}
  
  ==== Настройка DNS
  
  В простейшем случае достаточно добавить запись про тестовый хост: 
  
  ./etc/hosts
  ----
  127.0.53.53   web.dev        # <1>
  127.0.53.53   test.web.dev   # <2>
  ----
  <1> Хост web.dev используется как внешний адрес nginx (`consup/nginx.yml`)
  <2> URL тестового сайта - http://test.web.dev
  
  
  Для работы с несколькими контейнерами docker одновременно, используются подстановочные субдомены (wildcard subdomains)
  Например, если в локальной сети используется сервер `dnsmasq`, то надо добавить в его настройки
  
  .dnsmasq.conf
  ----
  address=/.dev/127.0.53.53
  ----
  После этого все адреса вида AAA.BBB.dev будут резолвиться как 127.0.53.53
  
  ==== Установка ConSup
  
  {consup} состоит из файлов сборки контейнеров docker (каталог `Dockerfiles`) и файлов конфигурации {fidm} для контейнеров общего назначения. Подробнее - см. документацию {consup}.
  
  .Выгрузить файлы consup
  ----
  $git clone https://github.com/LeKovr/consup.git
  ----
  
  .Сделать копию каталога с примером приложения
  ----
  $cp -R consup/eg/nginx-static .
  $cd nginx-static
  ----
  
  .Запустить контейнер
  ----
  $fidm start
  ----
  
  После этого можно открывать в браузере сайт http://test.web.dev
  
  
  == Лицензия
  
  