From 57db5860e34dbc5a308b9978a871a6ee02cdc547 Mon Sep 17 00:00:00 2001 From: Fionn Date: Fri, 30 Sep 2022 09:21:46 +0200 Subject: [PATCH] more moving, add router and example service and controller --- Dockerfile | 12 ++++-------- app/src/app.ts | 9 ++++++--- app/src/controllers/foo.controller.ts | 14 ++++++++++++++ app/src/router.ts | 8 ++++++++ app/src/services/foo.service.ts | 7 +++++++ docker-compose.yml | 2 +- 6 files changed, 40 insertions(+), 12 deletions(-) create mode 100644 app/src/controllers/foo.controller.ts create mode 100644 app/src/router.ts create mode 100644 app/src/services/foo.service.ts diff --git a/Dockerfile b/Dockerfile index 8466db7..9377b6e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,10 +3,12 @@ # ################################################################ FROM node:16-alpine as base -WORKDIR /app +WORKDIR /opt COPY . . +WORKDIR /opt/app + ARG NODE_ENV=production ENV NODE_ENV ${NODE_ENV} @@ -15,8 +17,6 @@ ENV NODE_ENV ${NODE_ENV} # ################################################################ FROM base as development -WORKDIR /app - RUN npm install --quiet --unsafe-perm --no-progress --no-audit --include=dev CMD npm run run:dev @@ -27,8 +27,6 @@ CMD npm run run:dev FROM base as backendbuild -WORKDIR /app - RUN npm install --quiet --unsafe-perm --no-progress --no-audit --include=dev RUN npx tsc -p ./tsconfig.json @@ -39,9 +37,7 @@ RUN npx tsc -p ./tsconfig.json FROM base as production -COPY --from=backendbuild --chown=node:node /app/dist/ /app/dist/ - -WORKDIR /app +COPY --from=backendbuild --chown=node:node /opt/app/dist/ /opt/app/dist/ RUN npm install --quiet --unsafe-perm --no-progress --no-audit --omit=dev diff --git a/app/src/app.ts b/app/src/app.ts index fe07f66..bab23d6 100644 --- a/app/src/app.ts +++ b/app/src/app.ts @@ -1,17 +1,20 @@ import express, { NextFunction, Request, Response } from 'express'; import ejsMate from 'ejs-mate'; +import router from './router'; const { PORT = 3000 } = process.env; const app = express(); app.engine('ejs', ejsMate); -app.set('views', '/app/views'); +app.set('views', '/opt/app/views'); app.set('view engine', 'ejs'); -app.use('/dist/bootstrap', express.static('/app/public')); +app.use(router.router); -app.use(express.static('/app/public')); +app.use('/dist/bootstrap', express.static('/opt/app/public')); + +app.use(express.static('/opt/app/public')); app.use((req: Request, res: Response, next: NextFunction) => { // 404 diff --git a/app/src/controllers/foo.controller.ts b/app/src/controllers/foo.controller.ts new file mode 100644 index 0000000..99122a6 --- /dev/null +++ b/app/src/controllers/foo.controller.ts @@ -0,0 +1,14 @@ +import { Request, Response } from 'express'; +import fooService from '../services/foo.service'; + +function getFoo(req: Request, res: Response) { + res.json({ + foo: true, + msg: fooService.getFooDetails(), + data: req.body, + }); +} + +export default { + getFoo, +}; diff --git a/app/src/router.ts b/app/src/router.ts new file mode 100644 index 0000000..3bba771 --- /dev/null +++ b/app/src/router.ts @@ -0,0 +1,8 @@ +import { Router } from 'express'; +import fooController from './controllers/foo.controller'; + +const router = Router(); + +router.get('/foo', fooController.getFoo); + +export default { router }; \ No newline at end of file diff --git a/app/src/services/foo.service.ts b/app/src/services/foo.service.ts new file mode 100644 index 0000000..79f4f5f --- /dev/null +++ b/app/src/services/foo.service.ts @@ -0,0 +1,7 @@ +function getFooDetails() { + return 'foo'; +} + +export default { + getFooDetails, +}; \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index 69abc4e..75938ec 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -12,7 +12,7 @@ services: - '3030:3030/tcp' - '9229:9229/tcp' volumes: - - .:/app:delegated + - .:/opt:delegated environment: - MONGO_URI - PORT=3030 \ No newline at end of file