diff --git a/Dockerfile b/Dockerfile index 58ace58..f5338ba 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,5 @@ FROM node:18-alpine +RUN apk update && apk add curl RUN npm install -g @nestjs/cli WORKDIR /usr/src/app COPY . . diff --git a/server-docker-compose.yaml b/server-docker-compose.yaml new file mode 100644 index 0000000..e976104 --- /dev/null +++ b/server-docker-compose.yaml @@ -0,0 +1,21 @@ +version: "3" +services: + web: + build: + context: . + dockerfile: Dockerfile + user: "node:node" + ports: + - "3000:3000" + networks: + - hi-services + healthcheck: + test: curl --fail http://0.0.0.0:3000/health-check/container || exit 1 + interval: 10s + timeout: 3s + retries: 3 + start_period: 20s + container_name: hi-container +networks: + hi-services: + external: true \ No newline at end of file diff --git a/src/app.module.ts b/src/app.module.ts index 84ec5f4..2305b47 100644 --- a/src/app.module.ts +++ b/src/app.module.ts @@ -4,7 +4,6 @@ import { NestModule, RequestMethod, } from '@nestjs/common'; -import { CassandraDatabaseQueries } from './Database/Cassandra/queries'; import { ConfessionsModule } from './Controllers/Confessions/confession.module'; import { OTPModule } from './Controllers/Otp/otp.module'; import { UserModule } from './Controllers/Users/user.module'; @@ -14,10 +13,9 @@ import { OTPController } from './Controllers/Otp/otp_controllers'; import { UserController } from './Controllers/Users/user_controller'; import { UserRoutes } from './Constants/route_paths'; import { ControllerPaths } from './Constants/contoller_paths'; -import { InjectionTokens } from './Constants/injection_tokens'; -import { casClient } from './service_containers'; import { ChatsModule } from './Controllers/Chats/chats.module'; import { RetrieveDataModule } from './Controllers/RetrieveData/retrieve_data.module'; +import { GlobalControllers } from './global_controller'; @Module({ imports: [ @@ -27,6 +25,7 @@ import { RetrieveDataModule } from './Controllers/RetrieveData/retrieve_data.mod ChatsModule, RetrieveDataModule, ], + controllers: [GlobalControllers], }) export class AppModule implements NestModule { configure(consumer: MiddlewareConsumer) { @@ -44,6 +43,10 @@ export class AppModule implements NestModule { path: ControllerPaths.USER_CONTROLLER + '/' + UserRoutes.LOGIN, method: RequestMethod.POST, }, + { + path: '/health-check/container', + method: RequestMethod.GET, + }, ) .forRoutes(ConfessionsController, OTPController, UserController); } diff --git a/src/global_controller.ts b/src/global_controller.ts new file mode 100644 index 0000000..e8d4566 --- /dev/null +++ b/src/global_controller.ts @@ -0,0 +1,13 @@ +import { Controller, Get, Req, Res } from '@nestjs/common'; +import express from 'express'; + +@Controller('health-check') +export class GlobalControllers { + @Get('container') + async containerHealthCheck( + @Req() req: express.Request, + @Res() res: express.Response, + ) { + return res.status(200).send('Ok'); + } +}