Browse Source

Adding containerization and kubernetes deployment

bodicsek 3 years ago
parent
commit
86933497b1
6 changed files with 87 additions and 2 deletions
  1. 7 0
      .dockerignore
  2. 15 0
      Dockerfile
  3. 19 0
      deployment/deployment.yaml
  4. 30 0
      deployment/ingress.yaml
  5. 11 0
      deployment/service.yaml
  6. 5 2
      package.json

+ 7 - 0
.dockerignore

@@ -0,0 +1,7 @@
+.DS_Store
+.git
+.gitignore
+node_modules
+dist
+.dockerignore
+Dockerfile

+ 15 - 0
Dockerfile

@@ -0,0 +1,15 @@
+FROM docker-remote.artifactory.oci.oraclecorp.com/oraclelinux:8
+
+RUN dnf upgrade -y && \
+    dnf module enable nodejs:16 -y && \
+    dnf module install nodejs -y
+
+WORKDIR /app
+
+COPY . .
+
+RUN npm ci
+
+EXPOSE 3000
+
+CMD [ "npm", "run", "start" ]

+ 19 - 0
deployment/deployment.yaml

@@ -0,0 +1,19 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: occ-fw-backend-deployment
+spec:
+  selector:
+    matchLabels:
+      app: occ-fw-backend
+  replicas: 1
+  template:
+    metadata:
+      labels:
+        app: occ-fw-backend
+    spec:
+      containers:
+        - name: occ-fw-backend
+          image: occ-fw-backend:0.0.1
+          ports:
+          - containerPort: 3000

+ 30 - 0
deployment/ingress.yaml

@@ -0,0 +1,30 @@
+---
+# Middleware
+# Strip prefix /overview
+apiVersion: traefik.containo.us/v1alpha1
+kind: Middleware
+metadata:
+  name: occ-fw-backend-path-strip-mw
+spec:
+  stripPrefix:
+    forceSlash: false
+    prefixes:
+      - /occ/api
+---
+# IngressRoute
+apiVersion: traefik.containo.us/v1alpha1
+kind: IngressRoute
+metadata:
+  name: occ-backend-ingress-route
+spec:
+  entryPoints:
+    - websecure
+  routes:
+    - kind: Rule
+      match: PathPrefix(`/occ/api/`)
+      middlewares:
+        - name: occ-fw-backend-path-strip-mw
+      services:
+        - kind: Service
+          name: occ-fw-backend-service
+          port: 80

+ 11 - 0
deployment/service.yaml

@@ -0,0 +1,11 @@
+apiVersion: v1
+kind: Service
+metadata:
+  name: occ-fw-backend-service
+spec:
+  selector:
+    app: occ-fw-backend
+  ports:
+    - protocol: TCP
+      port: 80
+      targetPort: 3000

+ 5 - 2
package.json

@@ -1,5 +1,5 @@
 {
-  "name": "idcs-oauth-client-bff",
+  "name": "occ-fw-backend",
   "version": "0.0.1",
   "description": "",
   "author": "",
@@ -8,8 +8,10 @@
   "scripts": {
     "prebuild": "rimraf dist",
     "build": "nest build",
+    "build:container": "docker build -t $npm_package_name:$npm_package_version .",
     "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"",
     "start": "nest start",
+    "start:container": "npm run build:container && docker run --rm -d -p 3000:3000 $npm_package_name:$npm_package_version",
     "start:dev": "nest start --watch",
     "start:debug": "nest start --debug --watch",
     "start:prod": "node dist/main",
@@ -18,7 +20,8 @@
     "test:watch": "jest --watch",
     "test:cov": "jest --coverage",
     "test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand",
-    "test:e2e": "jest --config ./test/jest-e2e.json"
+    "test:e2e": "jest --config ./test/jest-e2e.json",
+    "deploy": "npm run build:container && kubectl apply -f deployment"
   },
   "dependencies": {
     "@nestjs/axios": "^0.1.0",