From c539eaf65acc22a124be0465aff1ae472ddd5b4d Mon Sep 17 00:00:00 2001 From: Anton Vakhrushev Date: Fri, 24 Jul 2026 18:48:26 +0300 Subject: [PATCH] =?UTF-8?q?readme:=20app=5Fimage=20=D0=B2=20=D1=81=D0=BF?= =?UTF-8?q?=D0=B8=D1=81=D0=BA=D0=B5=20=D1=80=D0=BE=D0=BB=D0=B5=D0=B9=20+?= =?UTF-8?q?=20=D0=BA=D0=BE=D0=BD=D1=82=D1=80=D0=B0=D0=BA=D1=82=20=D0=B4?= =?UTF-8?q?=D0=BB=D1=8F=20=D0=BF=D1=80=D0=B8=D0=BB=D0=BE=D0=B6=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/README.md b/README.md index 91174a1..038b5dd 100644 --- a/README.md +++ b/README.md @@ -24,3 +24,37 @@ Git в этой директории — опциональный бэкап и ## Роли - `eget` — установка утилиты [eget](https://github.com/zyedidia/eget). +- `app_image` — локальная сборка docker-образа приложения и доставка его + на сервер через `docker save`/`load` (без registry; тулчейн сборки на + сервере не нужен). Подробности и переменные — в `roles/app_image/README.md`. + +### Контракт для приложения (app_image) + +Чтобы приложение можно было деплоить этой ролью, в его рабочей директории +должна быть **команда сборки образа** (по умолчанию `task image`). Роль — +инициатор: она вызывает команду и передаёт ей случайный `BUILD_ID` через +окружение. Команда обязана собрать **полный** образ и затегать его +`:$BUILD_ID`. + +Пример реализации на Taskfile (тег из `$BUILD_ID`, по умолчанию `dev` для +локальной работы): + +```yaml +image: + desc: 'Полный docker-образ. Тег из $BUILD_ID (по умолчанию dev).' + deps: [build] + cmds: + - docker build -t {{.BINARY}}:${BUILD_ID:-dev} . +``` + +Вызов роли в плейбуке: + +```yaml +- name: 'Build and deliver application image' + ansible.builtin.import_role: + name: app_image + vars: + app_image_name: 'myapp' + app_image_src_dir: '{{ (playbook_dir, "..", "myapp") | path_join }}' +# роль выставляет факт app_image_tag для рендера compose +```