Dapp

Dapp — это проект, который:

  • содержит код приложения или нескольких приложений;
  • описывает правила сборки docker-образов для этих приложений;
  • описывает правила развертывания docker-образов.

Dappfile

Dappfile — это файл, через который пользователь описывает правила сборки и развертывания приложений для данного проекта. Язык описания — ruby.

Директория dapp

Директория dapp — это директория, содержащая Dappfile.

Имя dapp

Имя dapp — это последний элемент пути к git репозиторию из параметра конфигурации remote.origin.url или, при отсутствии git или параметра конфигурации remote.origin.url, это имя директории dapp.

Dimg

Dimg — это именованный набор правил для сборки одного образа. Также dimg или образ dimg — это сам образ, собранный по данным правилам.

Группа dimg

Группа dimg — это неименованный набор правил для сборки образов, который наследуется:

  • другой группой dimg или
  • одним или несколькими dimg.

Scratch dimg

Scratch dimg — это образ состоящий из одного docker-слоя с файловыми ресурсами, объявленными пользователем dapp.

Артефакт

Артефакт (artifact) — это набор правил для сборки образа с файловым ресурсом, который импортируется в dimg.

Также артефакт или образ артефакта — это сам образ, собранный по данным правилам.

Используется для изолирования процесса сборки и инструментов сборки (среды, программного обеспечение, данных) ресурсов от образов, использующих эти ресурсы.

В один dimg или группу dimg может быть добавлено произвольное количество артефактов.

Правила сборки

  • Наследование правил сборки от dimg или группы dimg происходит по тем же правилам, что и у группы dimg.
  • Стадии артефакта:
    • from
    • before_install
    • before_install_artifact
    • git_artifact_archive
    • git_artifact_pre_install_patch
    • install
    • git_artifact_post_install_patch
    • after_install_artifact
    • before_setup
    • before_setup_artifact
    • git_artifact_pre_setup_patch
    • setup
    • after_setup_artifact
    • git_artifact_artifact_patch
    • build_artifact
  • Могут использоваться такие же директивы, как у dimg и dimg_group, но с некоторыми особенностями:
    • Для docker не используются директивы применения dockerfile-инструкций
    • Для shell dimg и chef dimg добавляется стадия build_artifact
    • У артефакта не может быть потомков, поэтому отсутствуют директивы dimg, dimg_group и artifact.

Файловый ресурс артефакта

Файловый ресурс артефакта — это экспортируемая артефактом директория с произвольными файлами внутри образа артефакта.

  • Каждый артефакт имеет один файловый ресурс, путь к которому указывается при его описании через параметр export.
  • При отсутствии директории в образе — считается, что это пустая директория (при импорте такого артефакта будет создана пустая директория).

Кэш приложения FIXME

Набор docker-образов, который определяется стадиями приложения.

Тип сборщика

Тип сборщика — это способ указания инструкций по сборке образа пользователем dapp.

Dapp поддерживает 2 типа сборщика: shell сборщик] и chef сборщик.

  • В одном dimg может быть использован один тип сборщика.
    • Соответственно существует 2 типа dimg: shell dimg и Chef dimg.
  • Тип сборщика определяется автоматически при первом использовании соответствующей инструкции в Dappfile.

Shell проект

Shell проект — это проект, для сборки которого используются команды shell, заданные в Dappfile.

Директория сборки dapp

Директория сборки dapp (build dir) — это директория для хранения кэша и производных данных сборки образов dapp.

  • Используется для:
  • Путь к build директории.
    • По умолчанию: <директория dapp>/.dapp_build.
    • Переопределяется параметром --build-dir.
  • Необходимо указывать одну и ту же build директорию для каждой из вызываемых команд dapp (или использовать путь к директории по умолчанию).
  • При указании build директории необходимо иметь в виду, что для каждого проекта нужна отдельная директория.
  • Одна и та же build директория используется всеми приложениями, описанными в данном проекте.

Временная директория приложения

Временная директория приложения (tmp dir) — это временная рабочая директория сборщика приложения.

  • Создается для каждого приложения во время сборки.
  • Используется для хранения:
  • Путь к директории: /tmp/dapp-<date>-<random>.
  • Удаление директории происходит автоматически при ожидаемом успешном или неуспешном завершении работы dapp.

Режим разработки

  • Включается опцией командной строки --dev.
  • Используется для:
    • включения создания файла Berksfile.lock в случае его отсутствия (см. cookbook приложения).

Блокировка ресурса

Блокировки обеспечивают корректную работу команд dapp при их параллельном запуске в рамках одного проекта на одном сервере.

  • Блокировки реализованы с использованием механизма файловых блокировок ОС.
  • Файлы блокировок хранятся в директории <build dir>/locks.

Внешняя директория сборки # TODO

Директория, которая монтируется в docker-контейнеры в процессе сборки приложения.

  • Используется для уменьшения размера кэша приложения и конечного образа приложения соответственно.
  • Ожидается директория с данными порождаемыми в процессе сборки, которые:
    • не требуются конечному пользователю;
    • занимают значительный размер.
  • Для добавления используются директивы tmp_dir и build_dir, которые различаются местом размещения внешней директории.

Scratch образ # TODO

Пустой docker образ, используемый в качестве окружения приложения по умолчанию, если пользователь не указал его (docker.from).