# Упаковка готового статического бинаря в минимальный образ.
#
# Бинарь собирается СНАРУЖИ, а не внутри образа:
#   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"]
