Browse Source

feat: worked on adding Docker

Kristian Vos 4 years ago
parent
commit
5b6ab4435c
7 changed files with 97 additions and 1 deletions
  1. 13 0
      .env.template
  2. 15 0
      backend/Dockerfile
  3. 2 1
      backend/package.json
  4. 32 0
      docker-compose.yml
  5. 24 0
      frontend/Dockerfile
  6. 3 0
      frontend/bootstrap.sh
  7. 8 0
      setup-mongo-docker.sh

+ 13 - 0
.env.template

@@ -0,0 +1,13 @@
+BACKEND_PORT=8080
+FRONTEND_PORT=80
+
+MONGO_PORT=27017
+MONGO_DATABASE=accountmanager
+
+MONGO_ROOT_PASSWORD=PASSWORD_HERE
+MONGO_ROOT_USERNAME=USERNAME_HERE
+
+MONGO_USER_PASSWORD=OTHER_PASSWORD_HERE
+MONGO_USER_USERNAME=OTHER_USERNAME_HERE
+
+COMPOSE_PROJECT_NAME=accountmanager

+ 15 - 0
backend/Dockerfile

@@ -0,0 +1,15 @@
+FROM node
+
+RUN apt-get update
+
+RUN npm install -g nodemon
+
+RUN mkdir -p /opt
+WORKDIR /opt
+ADD package.json /opt/package.json
+
+RUN npm install
+
+EXPOSE 80
+
+CMD npm run docker:dev

+ 2 - 1
backend/package.json

@@ -7,6 +7,7 @@
     "socket.io": "^2.3.0"
   },
   "scripts": {
-    "dev": "nodemon ."
+    "dev": "nodemon .",
+    "docker:dev": "nodemon -L /opt/app"
   }
 }

+ 32 - 0
docker-compose.yml

@@ -0,0 +1,32 @@
+version: '2'
+services:
+  backend:
+    build: ./backend
+    ports:
+    - "${BACKEND_PORT}:8080"
+    volumes:
+    - ./backend:/opt/app
+    - ./log:/opt/log
+    links:
+    - mongo
+  frontend:
+    build: ./frontend
+    ports:
+    - "${FRONTEND_PORT}:80"
+    volumes:
+    - ./frontend:/opt/app
+  mongo:
+    image: mongo:4.0
+    ports:
+    - "${MONGO_PORT}:27017"
+    environment:
+      - MONGO_INITDB_ROOT_USERNAME=${MONGO_ROOT_USERNAME}
+      - MONGO_INITDB_ROOT_PASSWORD=${MONGO_ROOT_PASSWORD}
+      - MONGO_INITDB_DATABASE=${MONGO_DATABASE}
+      - MONGO_PORT=${MONGO_PORT}
+      - MONGO_ROOT_USERNAME=${MONGO_ROOT_USERNAME}
+      - MONGO_ROOT_PASSWORD=${MONGO_ROOT_PASSWORD}
+      - MONGO_USER_USERNAME=${MONGO_USER_USERNAME}
+      - MONGO_USER_PASSWORD=${MONGO_USER_PASSWORD}
+    volumes:
+      - ./setup-mongo-docker.sh:/docker-entrypoint-initdb.d/setup-mongo.sh

+ 24 - 0
frontend/Dockerfile

@@ -0,0 +1,24 @@
+FROM node
+
+RUN apt-get update
+RUN apt-get install nginx -y
+
+RUN npm install -g yarn
+
+RUN yarn global add snyk
+RUN yarn global add webpack
+RUN yarn global add webpack-cli
+RUN yarn global add webpack-dev-server
+
+RUN mkdir -p /opt
+WORKDIR /opt
+ADD package.json /opt/package.json
+
+RUN yarn install
+
+RUN mkdir -p /run/nginx
+
+COPY bootstrap.sh /opt/
+RUN chmod u+x /opt/bootstrap.sh
+
+CMD bash /opt/bootstrap.sh

+ 3 - 0
frontend/bootstrap.sh

@@ -0,0 +1,3 @@
+#!/bin/bash
+
+cd /opt/app ; yarn run dev

+ 8 - 0
setup-mongo-docker.sh

@@ -0,0 +1,8 @@
+#!/bin/bash
+
+mongo musare \
+        --port ${MONGO_PORT} \
+        -u ${MONGO_ROOT_USERNAME} \
+        --authenticationDatabase "admin" \
+        -p ${MONGO_ROOT_PASSWORD} \
+        --eval "db.createUser({ user: '${MONGO_USER_USERNAME}', pwd: '${MONGO_USER_PASSWORD}', roles:[ { role:'readWrite', db: ${MONGO_DATABASE} } ] } );"