- task image принимает BUILD_ID и тегает <app>:$BUILD_ID (контракт роли app_image в umbar) - добавлен ADR-2026-07-24-local-image-build, старый docker-deploy помечен superseded - README/architecture/roadmap/Dockerfile обновлены под новую схему (без сборки на сервере)
25 lines
1.5 KiB
Docker
25 lines
1.5 KiB
Docker
# Упаковка готового статического бинаря в минимальный образ. Образ целиком
|
||
# собирается локально на 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"]
|