Initial Commit
This commit is contained in:
50
src/scripts/healthcheck.js
Normal file
50
src/scripts/healthcheck.js
Normal file
@@ -0,0 +1,50 @@
|
||||
// Health check script for Docker
|
||||
import { sql } from '../config/database.js';
|
||||
import Redis from 'ioredis';
|
||||
import { MeiliSearch } from 'meilisearch';
|
||||
|
||||
const checks = {
|
||||
database: false,
|
||||
redis: false,
|
||||
meilisearch: false
|
||||
};
|
||||
|
||||
try {
|
||||
// Check database
|
||||
await sql`SELECT 1`;
|
||||
checks.database = true;
|
||||
} catch (error) {
|
||||
console.error('Database check failed:', error.message);
|
||||
}
|
||||
|
||||
try {
|
||||
// Check Redis
|
||||
const redis = new Redis(process.env.REDIS_URL);
|
||||
await redis.ping();
|
||||
checks.redis = true;
|
||||
redis.disconnect();
|
||||
} catch (error) {
|
||||
console.error('Redis check failed:', error.message);
|
||||
}
|
||||
|
||||
try {
|
||||
// Check Meilisearch
|
||||
const client = new MeiliSearch({
|
||||
host: process.env.MEILISEARCH_URL,
|
||||
apiKey: process.env.MEILISEARCH_API_KEY
|
||||
});
|
||||
await client.health();
|
||||
checks.meilisearch = true;
|
||||
} catch (error) {
|
||||
console.error('Meilisearch check failed:', error.message);
|
||||
}
|
||||
|
||||
const allHealthy = Object.values(checks).every(Boolean);
|
||||
|
||||
if (allHealthy) {
|
||||
console.log('All services healthy');
|
||||
process.exit(0);
|
||||
} else {
|
||||
console.log('Some services unhealthy:', checks);
|
||||
process.exit(1);
|
||||
}
|
||||
Reference in New Issue
Block a user