51 lines
1.1 KiB
JavaScript
51 lines
1.1 KiB
JavaScript
// 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);
|
|
}
|