# Упаковка готового статического бинаря в минимальный образ. Образ целиком # собирается локально на control-хосте (`task image`) и едет на сервер через # docker save/load — роль app_image в umbar (см. # docs/adr/ADR-2026-07-24-local-image-build.md). # Бинарь собирается снаружи: # CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o jellybit ./cmd/jellybit # distroless/static несёт CA-сертификаты (HTTPS к LLM/TMDB). Пользователь # задаётся в compose (user: "1000:1000"). # # Тома (см. compose): /config (ro, рендерится плейбуком — восстановимо при # деплое) + /data (SQLite, бекапить-и-не-терять). FROM gcr.io/distroless/static-debian12 COPY jellybit /usr/local/bin/jellybit EXPOSE 8080 # В distroless нет shell/curl — проверку делает сам бинарь (порт берёт из # конфига). Путь задаём явно: дефолт загрузчика — config.toml в рабочей # директории, а конфиг смонтирован в /config. compose может переопределить. HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 \ CMD ["/usr/local/bin/jellybit", "healthcheck", "--config", "/config/config.toml"] ENTRYPOINT ["/usr/local/bin/jellybit", "--config", "/config/config.toml"]