fix: healthcheck не должен зависеть от полноты конфига
Build / Tests (push) Successful in 13s
Build / Build image (push) Failing after 19s
Build / Notify on failure (push) Failing after 1s

HEALTHCHECK в образе запускается отдельным процессом без -config и без секретов,
поэтому валидация конфига делала контейнер unhealthy при полностью рабочем демоне.
Проверка /healthz перенесена до разбора ошибки Load, который и при ошибке возвращает
конфиг со значениями по умолчанию.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
vasyanskandClaude Opus 5 committed 2026-09-22 17:35:48 +07:00
1 parent 273cd54415
commit b607fe0a64
2 files changed
+19 -4

No files matched your search

+7 -4
View File
@@ -39,10 +39,9 @@ func run() int {
}
cfg, err := config.Load(*configPath, os.Getenv, config.OSReadFile)
if err != nil {
fmt.Fprintln(os.Stderr, "ошибка конфигурации:", err)
return 2
}
// Проверка здоровья намеренно идёт ДО разбора ошибки конфигурации: HEALTHCHECK в образе
// запускается как отдельный процесс, без -config и без секретов, и ему нужен только адрес
// /healthz. Load возвращает конфиг с значениями по умолчанию даже при ошибке.
if *healthcheck {
if err := health.Probe(cfg.Listen, 3*time.Second); err != nil {
fmt.Fprintln(os.Stderr, err)
@@ -50,6 +49,10 @@ func run() int {
}
return 0
}
if err != nil {
fmt.Fprintln(os.Stderr, "ошибка конфигурации:", err)
return 2
}
log := newLogger(cfg)
log.Info("запуск", "version", version, "zones", cfg.Zones, "ip", cfg.IP, "ttl", cfg.TTL,