feat: add health check endpoint and Docker health monitoring
Add a /health endpoint to the application controller and configure Docker health checks. This enables container orchestration systems to monitor the application's liveness and readiness.
This commit is contained in:
@@ -18,4 +18,7 @@ RUN npm run build
|
||||
|
||||
EXPOSE 3000
|
||||
|
||||
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
|
||||
CMD wget --no-verbose --tries=1 --spider http://localhost:3000/health || exit 1
|
||||
|
||||
CMD ["npm", "start"]
|
||||
|
||||
Binary file not shown.
BIN
data/sessions.db
BIN
data/sessions.db
Binary file not shown.
3
dist/app.controller.d.ts
vendored
3
dist/app.controller.d.ts
vendored
@@ -9,4 +9,7 @@ export declare class AppController {
|
||||
register(): {};
|
||||
registerPost(body: any, res: Response, req: any): Promise<void>;
|
||||
logout(req: any, res: Response): void;
|
||||
health(): {
|
||||
status: string;
|
||||
};
|
||||
}
|
||||
|
||||
9
dist/app.controller.js
vendored
9
dist/app.controller.js
vendored
@@ -64,6 +64,9 @@ let AppController = class AppController {
|
||||
res.redirect('/login');
|
||||
});
|
||||
}
|
||||
health() {
|
||||
return { status: 'ok' };
|
||||
}
|
||||
};
|
||||
exports.AppController = AppController;
|
||||
__decorate([
|
||||
@@ -113,6 +116,12 @@ __decorate([
|
||||
__metadata("design:paramtypes", [Object, Object]),
|
||||
__metadata("design:returntype", void 0)
|
||||
], AppController.prototype, "logout", null);
|
||||
__decorate([
|
||||
(0, common_1.Get)('health'),
|
||||
__metadata("design:type", Function),
|
||||
__metadata("design:paramtypes", []),
|
||||
__metadata("design:returntype", void 0)
|
||||
], AppController.prototype, "health", null);
|
||||
exports.AppController = AppController = __decorate([
|
||||
(0, common_1.Controller)(),
|
||||
__metadata("design:paramtypes", [users_service_1.UsersService])
|
||||
|
||||
2
dist/app.controller.js.map
vendored
2
dist/app.controller.js.map
vendored
@@ -1 +1 @@
|
||||
{"version":3,"file":"app.controller.js","sourceRoot":"","sources":["../src/app.controller.ts"],"names":[],"mappings":"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"}
|
||||
{"version":3,"file":"app.controller.js","sourceRoot":"","sources":["../src/app.controller.ts"],"names":[],"mappings":"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"}
|
||||
2
dist/tsconfig.tsbuildinfo
vendored
2
dist/tsconfig.tsbuildinfo
vendored
File diff suppressed because one or more lines are too long
@@ -9,3 +9,9 @@ services:
|
||||
environment:
|
||||
- PORT=3000
|
||||
- NODE_ENV=production
|
||||
healthcheck:
|
||||
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:3000/health"]
|
||||
interval: 30s
|
||||
timeout: 3s
|
||||
retries: 3
|
||||
start_period: 5s
|
||||
|
||||
@@ -64,4 +64,9 @@ export class AppController {
|
||||
res.redirect('/login');
|
||||
});
|
||||
}
|
||||
|
||||
@Get('health')
|
||||
health() {
|
||||
return { status: 'ok' };
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user