А ты уверен, что тебе надо хелсчек делать?
у тебя коннект с приложения должен быть, а хелсчеки сервиса уже псы должны сделать. Грузия
А что за псы?
Я его просто делаю, так как база данных может быть опущенна на тот момент когда поднимаешь приложение (она у меня в докере и может не успеть развернуться, знаю что базу в докере держать плохо), что бы подождало а не ошибку сразу давало
На ноде вот такой код есть
export class HealthChecker {
failed: number = 0;
logger: Logger;
async testPg(): Promise
if ( this.failed >= 10 ) {
this.logger.err("Failed connect to PostgreSQL")
throw "Failed connect to PostgreSQL"
}
this.logger.inf("Trying connect to db...")
const pool = new pgDriver.Pool({
host: process.env.POSTGRES_HOST || "127.0.0.1",
port: parseInt(process.env.POSTGRES_PORT || ""),
user: process.env.POSTGRES_USER || "",
password: process.env.POSTGRES_PASSWORD || "",
database: process.env.POSTGRES_DB || "",
})
try { await pool.connect() } catch(err) {
this.failed++
this.logger.wrn("Cannot connect to db. Wait...")
await new Promise(resolve => setTimeout(resolve, 10000))
await this.testPg()
return
}
this.logger.good("Success connection to PostgreSQL! It's up")
pool.end()
}
constructor() {
this.logger = new Logger("Health Check")
}
}
Можно тупо переписать, но мб у кого то есть решения лучше
Перед стартом приложения в ноде просто делаю
await (new HealthChecker()).testPg() // Check if postgres up
// If it's down -- do not start server
Девопсы
ты должен сделать ретраи для коннекта (я бы количество попыток обернул в енвы и сделал дефолтное значение), после чего выдавать ошибку коннекта к базе. Всё. Остальное не твои заботы
Понял, ок
Вот тут как раз ретраи как я понимаю
Я вообще один, пет проект)
И девопс и фронт и бэк и тимлид и главный админ локалхоста)
Дык может он и есть девопс, откуда тебе знать