Files
jellybit/docs/adr/ADR-2026-06-13-docker-deploy.md
T

40 lines
2.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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.