<commit_before>---
title: Базовые определения
sidebar: doc_sidebar
permalink: definitions.html
folder: definition
---

### Dapp
Dapp — это проект, который:
* содержит код приложения или нескольких приложений;
* описывает правила сборки docker-образов для этих приложений;
* описывает правила развертывания docker-образов.

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

### Директория dapp
Директория dapp — это директория, содержащая [Dappfile](#dappfile).

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

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

### Группа dimg
Группа dimg — это неименованный набор правил для сборки образов, который наследуется:
* другой группой dimg или
* одним или несколькими [dimg](#dimg).

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

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

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

#### Правила сборки
* Наследованиe правил сборки от [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](docker_directives.html) не используются директивы применения dockerfile-инструкций
  * Для [shell dimg](#shell-dimg) и [chef dimg](#chef-dimg) добавляется стадия build_artifact
    * Для [shell](shell_directives.html) добавляется директива [build_artifact](shell_directives.html#shell-build_artifact-<cmd>-<cmd>-cache_version-<cache_version>).
  * У артефакта не может быть потомков, поэтому отсутствуют директивы dimg, dimg_group и artifact.

#### Использование артефактов
* В один [dimg](#dimg) или [группу dimg](#группа-dimg) может быть добавлено произольное количество артефактов.
* Один артефакт может быть добавлен в [dimg](#dimg) или в [группу dimg](#группа-dimg).

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

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

### Стадия FIXME
Стадия (stage) — это именованный набор инструкций для сборки docker образа.

* Собранное приложение представляет собой цепочку связанных стадий.
* Имя docker образа стадии формируется по шаблону: dimgstage-\<[имя проекта](#имя-проекта)\>:\<[сигнатура стадии](#сигнатура-стадии)\>.

### Сигнатура стадии FIXME
Сигнатура стадии (signature) — это контрольная сумма правил сборки, зависимостей стадии и сигнатуры предыдущей стадии, если она существует.

* Изменение сигнатуры стадии ведет к её пересборке, а также последующих стадий.
* При отсутствии правил и зависимостей, стадия игнорируется, используется сигнатура предыдущей стадии.

### Кэш приложения
Набор docker-образов, который определяется [стадиями приложения](#стадия).

### Тип сборки # TODO
Dapp поддерживает 2 типа сборки: [chef приложение](chef.html#chef-приложение) и [shell приложение](#shell-проект).

* В одном [приложении](#приложение) может быть использован один тип сборки.
* Тип сборки определяется автоматически при первом использовании соответствующей инструкции в [Dappfile](#dappfile).

### Shell проект FIXME
Shell проект — это проект, для сборки которого используются команды bash, заданные в [Dappfile](#dappfile).

### Chef директория # FIXME

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

* Используется для:
  * Хранения [дерева cookbooks](#дерево-cookbooks).
    * Этот результат при возможности кэшируется между сборками.
  * Кэширования [контрольных сумм cookbook\`ов стадий](#контрольная-сумма-cookbookов-стадии).
  * Хранения файлов блокировок проекта.
* Путь к build директории.
  * По умолчанию: \<[директория dapp](#директория-dapp)\>/.dapp_build.
  * Переопределяется параметром --build-dir.
* Необходимо указывать одну и ту же build директорию для каждой из вызываемых команд dapp (или использовать путь к директории по умолчанию).
* При указании build директории необходимо иметь в виду, что для каждого [проекта](#проект) нужна отдельная директория.
* Одна и та же build директория используется всеми [приложениями](#приложение), описанными в данном [проекте](#проект).

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

* Создается для каждого [приложения](#приложение) во время сборки.
* Используется для хранения:
  * Склонированных remote git репозиториев.
  * [Стадий cookbook\`ов](#стадия-cookbookа), [установленных](#установка-стадии-cookbookа) для сборки стадии.
* Путь к директории: /tmp/dapp-\<date\>-\<random\>.
* Удаление директории происходит автоматически при ожидаемом успешном или не успешном завершении работы dapp.

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

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

* Блокировки реализованы с использованием механизма файловых блокировок ОС.
* Файлы блокировок хранятся в директории \<[build dir](#директория-сборки)\>/locks.

### Внешняя директория сборки # TODO
Директория, которая монтируется в docker-контейнеры в процессе сборки [приложения](#приложение).

* Используется для уменьшения размера [кэша приложения](#кэш-приложения) и конечного образа приложения соответственно.
* Ожидается директория с данными порождаемыми в процессе сборки, которые:
  * не требуются конечному пользователю;
  * занимают значительный размер.
* Для добавления используются директивы [tmp_dir](base_directives.html#tmp_dir-<dir>-dir) и [build_dir](base_directives.html#build_dir-<dir>-dir), которые различаются местом размещения внешней директории. 

### Scratch образ # TODO
Пустой docker образ, используемый в качестве окружения приложения по умолчанию, если пользователь не указал его ([docker.from](docker_directives.html#docker-from-<image>-cache_version-<cache_version>)).
<commit_msg>docs++ [skip ci]<commit_after>---
title: Базовые определения
sidebar: doc_sidebar
permalink: definitions.html
folder: definition
---

### Dapp
Dapp — это проект, который:
* содержит код приложения или нескольких приложений;
* описывает правила сборки docker-образов для этих приложений;
* описывает правила развертывания docker-образов.

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

### Директория dapp
Директория dapp — это директория, содержащая [Dappfile](#dappfile).

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

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

### Группа dimg
Группа dimg — это неименованный набор правил для сборки образов, который наследуется:
* другой группой dimg или
* одним или несколькими [dimg](#dimg).

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

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

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

#### Правила сборки
* Наследованиe правил сборки от [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](docker_directives.html) не используются директивы применения dockerfile-инструкций
  * Для [shell dimg](#shell-dimg) и [chef dimg](#chef-dimg) добавляется стадия build_artifact
    * Для [shell](shell_directives.html) добавляется директива [build_artifact](shell_directives.html#shell-build_artifact-<cmd>-<cmd>-cache_version-<cache_version>).
  * У артефакта не может быть потомков, поэтому отсутствуют директивы dimg, dimg_group и artifact.

#### Использование артефактов
* В один [dimg](#dimg) или [группу dimg](#группа-dimg) может быть добавлено произольное количество артефактов.
* Один артефакт может быть добавлен в [dimg](#dimg) или в [группу dimg](#группа-dimg).

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

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

### Стадия FIXME
Стадия (stage) — это именованный набор инструкций для сборки docker образа.

* Собранное приложение представляет собой цепочку связанных стадий.
* Имя docker образа стадии формируется по шаблону: dimgstage-\<[имя проекта](#имя-проекта)\>:\<[сигнатура стадии](#сигнатура-стадии)\>.

### Сигнатура стадии FIXME
Сигнатура стадии (signature) — это контрольная сумма правил сборки, зависимостей стадии и сигнатуры предыдущей стадии, если она существует.

* Изменение сигнатуры стадии ведет к её пересборке, а также последующих стадий.
* При отсутствии правил и зависимостей, стадия игнорируется, используется сигнатура предыдущей стадии.

### Кэш приложения FIXME
Набор docker-образов, который определяется [стадиями приложения](#стадия).

### Тип сборщика # TODO
Dapp поддерживает 2 типа сборщика: [chef сборщик](chef.html#chef-сборщик) и [shell сборщик](shell.html#shell-сборщик).

* В одном [dimg](#dimg) может быть использован один тип сборщика.
* Тип сборщика определяется автоматически при первом использовании соответствующей инструкции в [Dappfile](#dappfile).

### Shell проект FIXME
Shell проект — это проект, для сборки которого используются команды bash, заданные в [Dappfile](#dappfile).

### Chef директория # FIXME

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

* Используется для:
  * Хранения [дерева cookbooks](#дерево-cookbooks).
    * Этот результат при возможности кэшируется между сборками.
  * Кэширования [контрольных сумм cookbook\`ов стадий](#контрольная-сумма-cookbookов-стадии).
  * Хранения файлов блокировок проекта.
* Путь к build директории.
  * По умолчанию: \<[директория dapp](#директория-dapp)\>/.dapp_build.
  * Переопределяется параметром --build-dir.
* Необходимо указывать одну и ту же build директорию для каждой из вызываемых команд dapp (или использовать путь к директории по умолчанию).
* При указании build директории необходимо иметь в виду, что для каждого [проекта](#проект) нужна отдельная директория.
* Одна и та же build директория используется всеми [приложениями](#приложение), описанными в данном [проекте](#проект).

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

* Создается для каждого [приложения](#приложение) во время сборки.
* Используется для хранения:
  * Склонированных remote git репозиториев.
  * [Стадий cookbook\`ов](#стадия-cookbookа), [установленных](#установка-стадии-cookbookа) для сборки стадии.
* Путь к директории: /tmp/dapp-\<date\>-\<random\>.
* Удаление директории происходит автоматически при ожидаемом успешном или не успешном завершении работы dapp.

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

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

* Блокировки реализованы с использованием механизма файловых блокировок ОС.
* Файлы блокировок хранятся в директории \<[build dir](#директория-сборки)\>/locks.

### Внешняя директория сборки # TODO
Директория, которая монтируется в docker-контейнеры в процессе сборки [приложения](#приложение).

* Используется для уменьшения размера [кэша приложения](#кэш-приложения) и конечного образа приложения соответственно.
* Ожидается директория с данными порождаемыми в процессе сборки, которые:
  * не требуются конечному пользователю;
  * занимают значительный размер.
* Для добавления используются директивы [tmp_dir](base_directives.html#tmp_dir-<dir>-dir) и [build_dir](base_directives.html#build_dir-<dir>-dir), которые различаются местом размещения внешней директории. 

### Scratch образ # TODO
Пустой docker образ, используемый в качестве окружения приложения по умолчанию, если пользователь не указал его ([docker.from](docker_directives.html#docker-from-<image>-cache_version-<cache_version>)).

{'fraction_non_alphanumeric': 0.08442572845208178, 'fraction_numerical': 0.00013584188005161992, 'mean_word_length': 5.707972665148064, 'pattern_counts': {'":': 0, '<': 29, '<?xml version=': 0, '>': 29, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4985031', 'n_tokens_mistral': 5756, 'n_tokens_neox': 6735, 'n_words': 1523}