From 346db8a6ec2719380d0c7fab1cfc4c181cbb02a3 Mon Sep 17 00:00:00 2001 From: K mehant <411843@student.nitandhra.ac.in> Date: Sun, 5 Jul 2020 15:16:01 +0530 Subject: [PATCH 1/7] Add container configurations Signed-off-by: K mehant <411843@student.nitandhra.ac.in> --- .dockerignore | 3 +++ Dockerfile.dev | 21 +++++++++++++++++++++ Dockerfile.prod | 14 ++++++++++++++ docker-compose.dev.yml | 27 +++++++++++++++++++++++++++ docker-compose.prod.yml | 30 ++++++++++++++++++++++++++++++ 5 files changed, 95 insertions(+) create mode 100644 .dockerignore create mode 100644 Dockerfile.dev create mode 100644 Dockerfile.prod create mode 100644 docker-compose.dev.yml create mode 100644 docker-compose.prod.yml diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..842de51 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,3 @@ +node_modules +.git +.github diff --git a/Dockerfile.dev b/Dockerfile.dev new file mode 100644 index 0000000..0ff91bb --- /dev/null +++ b/Dockerfile.dev @@ -0,0 +1,21 @@ +FROM node:latest + +ENV NODE_ENV="development" + +# Copy package.json file into container +COPY package.json package.json +COPY package-lock.json package-lock.json + +# Install node modules +RUN npm install && \ + npm install --only=dev && \ + npm cache clean --force --loglevel=error + +# Volume to mount source code into container +VOLUME [ "/server" ] + +# move to the source code directory +WORKDIR /server + +# Start the server +CMD mv ../node_modules . && npm run dev \ No newline at end of file diff --git a/Dockerfile.prod b/Dockerfile.prod new file mode 100644 index 0000000..dd562e6 --- /dev/null +++ b/Dockerfile.prod @@ -0,0 +1,14 @@ +FROM node:latest + +ENV NODE_ENV="production" + +WORKDIR /server + +RUN git clone https://github.com/codeuino/social-platform-donut-backend.git + +WORKDIR /server/social-platform-donut-backend + +RUN npm install && npm cache clean --force --loglevel=error + +# Start the server +CMD [ "npm", "start" ] \ No newline at end of file diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml new file mode 100644 index 0000000..469d76b --- /dev/null +++ b/docker-compose.dev.yml @@ -0,0 +1,27 @@ +version: "3" +services: + server: + container_name: server + restart: always + expose: + - "5000" + build: + context: . + dockerfile: Dockerfile.dev + volumes: + - ./:/server + ports: + - "5000:5000" + links: + - mongo + env_file: + - .env.dev + mongo: + container_name: mongo + image: mongo + volumes: + - db-data:/data/db + ports: + - "27017:27017" +volumes: + db-data: diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml new file mode 100644 index 0000000..96f2b1c --- /dev/null +++ b/docker-compose.prod.yml @@ -0,0 +1,30 @@ +version: "3" +services: + server: + container_name: server-prod + restart: always + expose: + - "5000" + build: + context: . + dockerfile: Dockerfile.prod + ports: + - "5000:5000" + links: + - mongo + environment: + - PORT=5000 + - NODE_ENV="production" + - JWT_SECRET="thisismysupersecrettokenjustkidding" + - DATABASE_URL="mongodb://mongo:27017/donut-development" + - SENDGRID_API_KEY='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' + - SOCKET_PORT=8810 + mongo: + container_name: mongo + image: mongo + volumes: + - db-data:/data/db + ports: + - "27017:27017" +volumes: + db-data: From c047a4155fa6255fca86221cf964c40b9f2646de Mon Sep 17 00:00:00 2001 From: K mehant <411843@student.nitandhra.ac.in> Date: Sun, 5 Jul 2020 21:49:40 +0530 Subject: [PATCH 2/7] Add new line at EOF --- Dockerfile.dev | 2 +- Dockerfile.prod | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Dockerfile.dev b/Dockerfile.dev index 0ff91bb..1f0fd8e 100644 --- a/Dockerfile.dev +++ b/Dockerfile.dev @@ -18,4 +18,4 @@ VOLUME [ "/server" ] WORKDIR /server # Start the server -CMD mv ../node_modules . && npm run dev \ No newline at end of file +CMD mv ../node_modules . && npm run dev diff --git a/Dockerfile.prod b/Dockerfile.prod index dd562e6..ab12f99 100644 --- a/Dockerfile.prod +++ b/Dockerfile.prod @@ -11,4 +11,4 @@ WORKDIR /server/social-platform-donut-backend RUN npm install && npm cache clean --force --loglevel=error # Start the server -CMD [ "npm", "start" ] \ No newline at end of file +CMD [ "npm", "start" ] From 504834486dd99123366244e68b28dcb6cf32fbbb Mon Sep 17 00:00:00 2001 From: K mehant <411843@student.nitandhra.ac.in> Date: Sun, 5 Jul 2020 22:20:20 +0530 Subject: [PATCH 3/7] Add Github workflow for build and push donut-server image Signed-off-by: K mehant <411843@student.nitandhra.ac.in> --- .github/image-workflow.yaml | 40 +++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 .github/image-workflow.yaml diff --git a/.github/image-workflow.yaml b/.github/image-workflow.yaml new file mode 100644 index 0000000..42d3307 --- /dev/null +++ b/.github/image-workflow.yaml @@ -0,0 +1,40 @@ +name: donut-server-image-ci + +on: + push: + branches: + - development + + tags: + - v* + +env: + IMAGE_NAME: donut-server:latest + REPO_NAME: codeuino + REGISTRY_NAME: registry.hub.docker.com + +jobs: + push: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + + - name: Build image + run: docker build . --file Dockerfile.prod --tag $IMAGE_NAME + + - name: Log into registry + run: docker login -u {{ secrets.DOCKER_USERNAME }} -p {{ secrets.DOCKER_PASSWORD }} + + - name: Push image + run: | + IMAGE_ID=$REGISTRY_NAME/$REPO_NAME/$IMAGE_NAME + + [[ "${{ github.ref }}" == "refs/tags/"* ]] && VERSION=$(echo $VERSION | sed -e 's/^v//') + + echo IMAGE_ID=$IMAGE_ID + echo VERSION=$VERSION + + docker tag $IMAGE_NAME $IMAGE_ID:$VERSION + docker push $IMAGE_ID:$VERSION + docker tag $IMAGE_NAME $IMAGE_ID:latest + docker push $IMAGE_ID:$VERSION From 703830d062fc8c094903f1da3abcc5fbc0011796 Mon Sep 17 00:00:00 2001 From: K mehant <411843@student.nitandhra.ac.in> Date: Mon, 6 Jul 2020 21:06:34 +0530 Subject: [PATCH 4/7] Fix env file Signed-off-by: K mehant <411843@student.nitandhra.ac.in> --- .env.dev | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.env.dev b/.env.dev index afc775f..9a4dbca 100644 --- a/.env.dev +++ b/.env.dev @@ -1,6 +1,6 @@ PORT=5000 NODE_ENV="development" JWT_SECRET="thisismysupersecrettokenjustkidding" -DATABASE_URL="mongodb://localhost:27017/donut-development" -SENDGRID_API_KEY = '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' -SOCKET_PORT = 8810 \ No newline at end of file +DATABASE_URL="mongodb://mongo:27017/donut-development" +SENDGRID_API_KEY='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' +SOCKET_PORT=8810 \ No newline at end of file From 4356a953a7dcb48ace7231e6e95b4b82dca30a7d Mon Sep 17 00:00:00 2001 From: K mehant <411843@student.nitandhra.ac.in> Date: Mon, 6 Jul 2020 21:07:28 +0530 Subject: [PATCH 5/7] Add pm2 to make server production ready --- Dockerfile.prod | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Dockerfile.prod b/Dockerfile.prod index ab12f99..464847e 100644 --- a/Dockerfile.prod +++ b/Dockerfile.prod @@ -8,7 +8,9 @@ RUN git clone https://github.com/codeuino/social-platform-donut-backend.git WORKDIR /server/social-platform-donut-backend -RUN npm install && npm cache clean --force --loglevel=error +RUN npm install && \ + npm install pm2@latest -g && \ + npm cache clean --force --loglevel=error # Start the server -CMD [ "npm", "start" ] +CMD [ "pm2", "start", "./bin/www", "--time", "--no-daemon" ] From bf387657aa331e95fc06f0ae5f038726529845d5 Mon Sep 17 00:00:00 2001 From: K mehant <411843@student.nitandhra.ac.in> Date: Tue, 7 Jul 2020 16:48:19 +0530 Subject: [PATCH 6/7] Change repo name to codeuino1 Signed-off-by: K mehant <411843@student.nitandhra.ac.in> --- .github/{ => workflows}/image-workflow.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename .github/{ => workflows}/image-workflow.yaml (97%) diff --git a/.github/image-workflow.yaml b/.github/workflows/image-workflow.yaml similarity index 97% rename from .github/image-workflow.yaml rename to .github/workflows/image-workflow.yaml index 42d3307..317022e 100644 --- a/.github/image-workflow.yaml +++ b/.github/workflows/image-workflow.yaml @@ -10,7 +10,7 @@ on: env: IMAGE_NAME: donut-server:latest - REPO_NAME: codeuino + REPO_NAME: codeuino1 REGISTRY_NAME: registry.hub.docker.com jobs: From c4174216d72dc5cf0f1e79db27e826b5990422b5 Mon Sep 17 00:00:00 2001 From: K mehant <411843@student.nitandhra.ac.in> Date: Wed, 8 Jul 2020 19:23:18 +0530 Subject: [PATCH 7/7] Add specific node version Node->v14 ships npm->v6 Signed-off-by: K mehant <411843@student.nitandhra.ac.in> --- Dockerfile.dev | 2 +- Dockerfile.prod | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Dockerfile.dev b/Dockerfile.dev index 1f0fd8e..3c81e0c 100644 --- a/Dockerfile.dev +++ b/Dockerfile.dev @@ -1,4 +1,4 @@ -FROM node:latest +FROM node:14 ENV NODE_ENV="development" diff --git a/Dockerfile.prod b/Dockerfile.prod index 464847e..f5d7097 100644 --- a/Dockerfile.prod +++ b/Dockerfile.prod @@ -1,4 +1,4 @@ -FROM node:latest +FROM node:14 ENV NODE_ENV="production"