From dfe481e45e79fdeb678edbe85e0661491c00dad2 Mon Sep 17 00:00:00 2001 From: Chris Schimetschka Date: Sat, 24 Dec 2022 16:06:25 +0100 Subject: [PATCH] launched development container --- Dockerfile | 7 +++-- README.md | 77 ++++++++++++++++++++++++---------------------- docker-compose.yml | 31 +++++++++++++++++++ 3 files changed, 75 insertions(+), 40 deletions(-) create mode 100644 docker-compose.yml diff --git a/Dockerfile b/Dockerfile index 1260cf0..718ec2d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,8 +1,9 @@ -FROM node:16.13-alpine3.14 as Dev +# dev +FROM node:18-slim as dev # Create dir for app and node_modules and give perm to user node -RUN mkdir -p /backend/node_modules && chown -R node:node /backend -WORKDIR /backend +RUN mkdir -p /api/node_modules && chown -R node:node /api +WORKDIR /api COPY package*.json ./ diff --git a/README.md b/README.md index 384aad1..b12c32b 100644 --- a/README.md +++ b/README.md @@ -17,18 +17,18 @@ npm install --legacy-peer-deps ### Während der Entwicklung -Als Datenbank wird mongodb benutzt, welches vorher installiert werden muss: -[https://docs.mongodb.com/manual/installation/] -Datenbank starten mit +Als Datenbank wird mongodb benutzt. Die Entwicklung geschieht aber autark in Docker-Containern. Hierzu gibt es ein `Dockerfile` und eine `docker-compose.yml`, welche die erforderliche Konfiguration haben. + +Zum Starten ``` -mongod +docker compose -p [projekt_name] up -d ``` -Server starten +Zum Stoppen der Container ``` -npm run dev +docker compose down ``` In Prod: @@ -38,7 +38,7 @@ npm run start ``` Im Browser aufrufen: -http://localhost:3000 +http://localhost:4000 ### Beschreibung @@ -52,15 +52,18 @@ Testen mit https://install.advancedrestclient.com/install ### User Routes -| Route | HTTP Methode | Beschreibung | -| -------------------- | :----------: | ---------------------------: | -| `/api/users` | `POST` | Erstelle Benutzer | -| `/api/users` | `GET` | Liste aller Benutzer | -| `/api/users/:userId` | `GET` | Rufe bestimmten Benutzer auf | -| `/api/users/:userId` | `PUT` | aktualisiere Benutzer | -| `/api/users/:userId` | `DELETE` | Lösche Benutzer | -| `/auth/signin` | `POST` | Anmelden | -| `/auth/signout` | `GET` | Abmelden | +| Route | HTTP Methode | Beschreibung | +| ---------------------------- | :----------: | --------------------------------: | +| `/api/users` | `POST` | Erstelle Benutzer | +| `/api/users` | `GET` | Liste aller Benutzer | +| `/api/users/:userId` | `GET` | Rufe bestimmten Benutzer auf | +| `/api/users/:userId` | `PUT` | aktualisiere Benutzer | +| `/api/users/:userId` | `DELETE` | Lösche Benutzer | +| `/auth/signin` | `POST` | Anmelden | +| `/auth/signout` | `GET` | Abmelden | +| `/auth/completeRegistration` | `POST` | Aktivieren | +| `/auth/requestPasswordReset` | `POST` | Anfrage Passwort zurücksetzen | +| `/auth/resetPassword` | `POST` | Passwort zuruecksetzen bestätigen | ### Benutzer Felder in der Datenbank @@ -75,6 +78,27 @@ Testen mit https://install.advancedrestclient.com/install | borrowedBooks | borrowedBooks | Ausgeliehende Bücher | | bookmarkedBooks | bookmarkedBooks | gemerkte Bücher | +### requestPasswordReset route + +| Feld | Typ | Beschreibung | +| ---- | :----: | -------------: | +| mail | string | Mail des Users | + +### resetPassword route + +| Feld | Typ | Beschreibung | +| -------- | :-------------: | ---------------------: | +| userId | mongoose.userid | ID des Users | +| token | string | Token zum zurücksetzen | +| password | string | Neues Passwort | + +### registration activate route + +| Feld | Typ | Beschreibung | +| ------ | :-------------: | ---------------------: | +| userId | mongoose.userid | ID des Users | +| token | string | Token zum zurücksetzen | + ### Bücher API | Route | HTTP Methode | Beschreibung | @@ -168,24 +192,3 @@ Testen mit https://install.advancedrestclient.com/install Bei ungelesen Nachrichten ist der Zeitstempel updatedAt neuer als readAt und der Sender der Nachricht ist nicht der gerade eingeloggte Benutzer updatedAt > readAt und Sender der letzten Nachricht != Gerade eingeloggter Benutzer - -### requestPasswordReset route - -| Feld | Typ | Beschreibung | -| ---- | :----: | -------------: | -| mail | string | Mail des Users | - -### resetPassword route - -| Feld | Typ | Beschreibung | -| -------- | :-------------: | ---------------------: | -| userId | mongoose.userid | ID des Users | -| token | string | Token zum zurücksetzen | -| password | string | Neues Passwort | - -### registration activate route - -| Feld | Typ | Beschreibung | -| ------ | :-------------: | ---------------------: | -| userId | mongoose.userid | ID des Users | -| token | string | Token zum zurücksetzen | diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..b383e27 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,31 @@ +version: "3.9" + +services: + db: + image: mongo:4.4-focal + volumes: + - database:/data/db + ports: + - "27017:27017" + networks: + - kodebi-network + api: + env_file: + - ./.env + build: + context: ./ + target: "dev" + depends_on: + - db + volumes: + - ./:/root/api:cached + ports: + - "4000:4000" + networks: + - kodebi-network +networks: + kodebi-network: + driver: bridge +volumes: + database: + driver: local