# Docker как единица деплоя, образ собирается на сервере - Дата: 2026-06-13 ## Контекст 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.