From 217d6ca824fc19b6b2898b29808995525c4400d2 Mon Sep 17 00:00:00 2001 From: Dinush Chathurya Date: Wed, 7 Jun 2023 15:11:33 +0530 Subject: [PATCH] feat: Initialize the project --- .../deploy-to-minikube-github-actions.yaml | 28 ++++++++++++++ Dockerfile | 8 ++++ README.md | 2 + k8s-node-app.yaml | 37 +++++++++++++++++++ package.json | 13 +++++++ server.js | 16 ++++++++ 6 files changed, 104 insertions(+) create mode 100644 .github/workflows/deploy-to-minikube-github-actions.yaml create mode 100644 Dockerfile create mode 100644 README.md create mode 100644 k8s-node-app.yaml create mode 100644 package.json create mode 100644 server.js diff --git a/.github/workflows/deploy-to-minikube-github-actions.yaml b/.github/workflows/deploy-to-minikube-github-actions.yaml new file mode 100644 index 0000000..9bd7fea --- /dev/null +++ b/.github/workflows/deploy-to-minikube-github-actions.yaml @@ -0,0 +1,28 @@ +name: Deploy to Minikube using GitHub Actions + +on: [push] + +jobs: + job1: + runs-on: ubuntu-latest + name: build Node.js Docker Image and deploy to minikube + steps: + - uses: actions/checkout@v2 + - name: Start minikube + uses: medyagh/setup-minikube@master + - name: Try the cluster ! + run: kubectl get pods -A + - name: Build image + run: | + export SHELL=/bin/bash + eval $(minikube -p minikube docker-env) + docker build -f ./Dockerfile -t devopshint/node-app:latest . + echo -n "verifying images:" + docker images + - name: Deploy to minikube + run: + kubectl apply -f k8s-node-app.yaml + - name: Test service URLs + run: | + minikube service list + minikube service nodejs-app --url diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..a07e1e3 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,8 @@ +FROM node:14 +WORKDIR /usr/src/app +COPY package*.json ./ +RUN npm install +RUN npm install express +COPY . . +EXPOSE 3000 +CMD [ "node", "server.js" ] diff --git a/README.md b/README.md new file mode 100644 index 0000000..7d8d9f0 --- /dev/null +++ b/README.md @@ -0,0 +1,2 @@ +# deploy-to-minikube-using-github-actions +Deploy to Minikube using GitHub Actions diff --git a/k8s-node-app.yaml b/k8s-node-app.yaml new file mode 100644 index 0000000..a487b92 --- /dev/null +++ b/k8s-node-app.yaml @@ -0,0 +1,37 @@ +--- +kind: Deployment +apiVersion: apps/v1 +metadata: + name: nodejs-app + namespace: default + labels: + app: nodejs-app +spec: + replicas: 1 + selector: + matchLabels: + app: nodejs-app + template: + metadata: + labels: + app: nodejs-app + spec: + containers: + - name: nodejs-app + image: "devopshint/node-app:latest" + ports: + - containerPort: 3000 +--- +apiVersion: v1 +kind: Service +metadata: + name: nodejs-app + namespace: default +spec: + selector: + app: nodejs-app + type: NodePort + ports: + - name: http + targetPort: 3000 + port: 80 diff --git a/package.json b/package.json new file mode 100644 index 0000000..b61ea90 --- /dev/null +++ b/package.json @@ -0,0 +1,13 @@ +{ + "name": "docker_web_app", + "version": "1.0.0", + "description": "Node.js on Docker", + "author": "First Last ", + "main": "server.js", + "scripts": { + "start": "node server.js" + }, + "dependencies": { + "express": "^4.16.1" + } + } diff --git a/server.js b/server.js new file mode 100644 index 0000000..272cd9d --- /dev/null +++ b/server.js @@ -0,0 +1,16 @@ +'use strict'; + +const express = require('express'); + +// Constants +const PORT = 3000; +const HOST = '0.0.0.0'; + +// App +const app = express(); +app.get('/', (req, res) => { + res.send('Hello World'); +}); + +app.listen(PORT, HOST); +console.log(`Running on http://${HOST}:${PORT}`);