# Docker как единица деплоя, образ собирается на сервере

- **Дата:** 2026-06-13
- **Источник:** архивного `design.md` нет — решение принято до перехода
  проекта на OpenSpec (первый архивный change — `2026-06-28`); первичный
  материал — история git
- **Статус:** заменено на ADR-2026-07-24-local-image-build

## Контекст

jellybit — статический Go-бинарь (см.
[ADR-2026-06-13-go-single-binary](ADR-2026-06-13-go-single-binary.md)). На
сервере umbar qBittorrent и (в планах) Jellyfin работают в docker. Нужно
выбрать, как запускать jellybit и как доставлять его на сервер.

## Рассмотренные варианты

- **Нативный systemd-юнит** — ближе всего к «просто скопировать бинарь»,
  но это отдельная среда вне docker; разнобой со смежными приложениями
  (сети, монтирования, политики рестарта).
- **Docker, образ собран и запушен из CI/реестра** — каноничнее, но в
  домашней лаборатории это лишний реестр и пайплайн.
- **Docker, образ собирается на сервере из готового бинаря** — на сервер
  кладутся бинарь + `Dockerfile`, `docker build` выполняется на месте.

## Решение

jellybit запускаем в **docker** — в одной среде с qBittorrent/Jellyfin
(единый способ управления, сети, монтирований). Образ **собираем на
сервере** из доставленного бинаря и `Dockerfile` (копирует бинарь в
`distroless/static`). Go-тулчейн и реестр на сервере не нужны. `Dockerfile`
(упаковка) живёт в jellybit; оркестрация (доставка, build, compose с
общей docker-сетью, `user 1000:1000`, mount `/srv/media` и data-тома) — в
umbar.

## Последствия

- `+` Одна среда со смежными сервисами; единые сети/монтирования/политики.
- `+` Доставка остаётся дешёвой: бинарь + `Dockerfile`, без реестра.
- `+` Образ версионируется (тег по сборке) — есть откат.
- `-` Шаг `docker build` на сервере (на Intel N150 дёшево).
- `-` Лёгкое отступление от «просто скопировать бинарь» — оправдано
  единообразием среды с qBittorrent/Jellyfin.
