добавлено окружение разработки: контейнер и гейт ревью

- сервис поднимается через `task up`/`task restart`, данные вынесены в ./data
  и переживают пересборку — поток с телефона не прерывается
- `task gate` гоняет build/vet/lint/test/race/покрытие диффа/миграции, плюс два
  шага под healthlog: данные о здоровье в индексе и синхронность образцов конфига
- `task review:context` собирает вход для архитектурного прохода ревью
This commit is contained in:
av
2026-08-01 14:11:41 +03:00
parent 2ef43e1c2c
commit 505664acf1
9 changed files with 631 additions and 2 deletions
+24
View File
@@ -0,0 +1,24 @@
# Упаковка готового статического бинаря в минимальный образ.
#
# Бинарь собирается СНАРУЖИ, а не внутри образа:
# CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o healthlog ./cmd/healthlog
# Так пересборка идёт по горячему кэшу Go на хосте — секунды вместо минут,
# что важно при частом цикле «поправил → перезапустил». Готовит бинарь
# `task build`, от которой зависит `task up`.
#
# distroless/static: без shell и пакетного менеджера, только CA-сертификаты.
# Пользователь задаётся в compose (user: "1000:1000") — чтобы файлы в томе
# принадлежали хозяину каталога, а не root.
FROM gcr.io/distroless/static-debian12
COPY healthlog /usr/local/bin/healthlog
EXPOSE 8080
# В distroless нет ни shell, ни curl — проверку делает сам бинарь, порт берёт
# из конфига. Путь к конфигу задаём явно: умолчание загрузчика — config.toml
# в рабочей директории, а конфиг смонтирован в /config.
HEALTHCHECK --interval=30s --timeout=5s --start-period=5s --retries=3 \
CMD ["/usr/local/bin/healthlog", "healthcheck", "--config", "/config/config.toml"]
ENTRYPOINT ["/usr/local/bin/healthlog", "serve", "--config", "/config/config.toml"]