добавлено окружение разработки: контейнер и гейт ревью
- сервис поднимается через `task up`/`task restart`, данные вынесены в ./data и переживают пересборку — поток с телефона не прерывается - `task gate` гоняет build/vet/lint/test/race/покрытие диффа/миграции, плюс два шага под healthlog: данные о здоровье в индексе и синхронность образцов конфига - `task review:context` собирает вход для архитектурного прохода ревью
This commit is contained in:
+24
@@ -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"]
|
||||
Reference in New Issue
Block a user