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