diff --git a/Docker Project/Dockerfile.dev b/Docker Project/Dockerfile.dev new file mode 100644 index 00000000..162774e1 --- /dev/null +++ b/Docker Project/Dockerfile.dev @@ -0,0 +1,6 @@ +FROM node:18-alpine +WORKDIR /usr/app +COPY ./package.json ./ +RUN npm install +COPY ./ ./ +CMD ["npm", "run", "serve"] \ No newline at end of file diff --git a/Docker Project/database.connection.ts b/Docker Project/database.connection.ts new file mode 100644 index 00000000..43e73115 --- /dev/null +++ b/Docker Project/database.connection.ts @@ -0,0 +1,19 @@ +import "reflect-metadata"; +import { createConnection, Connection, ConnectionOptions } from "typeorm"; +import { join } from "path"; +const parentDir = join(__dirname, ".."); + +const connectionOpts: ConnectionOptions = { + type: "postgres", + host: process.env.POSTGRES_HOST || "postgres", + port: Number(process.env.POSTGRES_PORT) || 5432, + username: process.env.POSTGRES_USERNAME || "postgres", + password: process.env.POSTGRES_PASSWORD || "postgres_password", + database: process.env.POSTGRES_DB || "simple_blog_api", + entities: [`${parentDir}/**/*.entity.ts`], + synchronize: true +}; + +const connection:Promise = createConnection(connectionOpts); + +export default connection; diff --git a/Docker Project/docker-compose.yml b/Docker Project/docker-compose.yml new file mode 100644 index 00000000..3f41dab1 --- /dev/null +++ b/Docker Project/docker-compose.yml @@ -0,0 +1,29 @@ +version: '3' +services: + postgres: + image: 'postgres:latest' + environment: + - POSTGRES_PASSWORD=postgres_password + - POSTGRES_USER=postgres + - POSTGRES_DB=simple_blog_api + - POSTGRES_TYPE=postgres + - POSTGRES_HOST=postgres + volumes: + - ./localDataCenter:./data + command: ["postgres", "--save", "1 1"] + + node-app: + depends_on: + - postgres + restart: always + image : docker.io/snehasharma2606/simpleblogapi:1.2 + # build: + # context: ./ + ports: + - "3000:3000" + environment: + - PGUSER=postgres + - PGHOST=postgres + - PGDATABASE=simple_blog_api + - PGPASSWORD=postgres_password + - PGPORT=5432 \ No newline at end of file diff --git a/Kubernetes Project/ingress-service.yml b/Kubernetes Project/ingress-service.yml new file mode 100644 index 00000000..9e2909c0 --- /dev/null +++ b/Kubernetes Project/ingress-service.yml @@ -0,0 +1,26 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: ingress-service + annotations: + kubernetes.io/ingress.class: nginx + nginx.ingress.kubernetes.io/use-regex: "true" + nginx.ingress.kubernetes.io/rewrite-target: /$1 +spec: + rules: + - http: + paths: + - path: /?(.*) + pathType: Prefix + backend: + service: + name: node-app-cluster-ip-service + port: + number: 3000 + - path: /api/?(.*) + pathType: Prefix + backend: + service: + name: node-app-cluster-ip-service + port: + number: 3000 diff --git a/Kubernetes Project/node-app-cluster-ip-service.yml b/Kubernetes Project/node-app-cluster-ip-service.yml new file mode 100644 index 00000000..526e5398 --- /dev/null +++ b/Kubernetes Project/node-app-cluster-ip-service.yml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: Service +metadata: + name: node-app-cluster-ip-service +spec: + type: ClusterIP + selector: + component: node-app + ports: + - port: 3000 + targetPort: 3000 \ No newline at end of file diff --git a/Kubernetes Project/node-app-deployment.yml b/Kubernetes Project/node-app-deployment.yml new file mode 100644 index 00000000..2a861222 --- /dev/null +++ b/Kubernetes Project/node-app-deployment.yml @@ -0,0 +1,27 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: node-app-deployment +spec: + replicas: 1 + selector: + matchLabels: + component: node-app + template: + metadata: + labels: + component: node-app + spec: + containers: + - name: node-app + image: docker.io/snehasharma2606/simpleblogapi:1.2 + ports: + - containerPort: 3000 + env: + - name: POSTGRES_PASSWORD + valueFrom: + secretKeyRef: + name: pgpassword + key: POSTGRES_PASSWORD + - name: POSTGRES_HOST + value: postgres-cluster-ip-service diff --git a/Kubernetes Project/postgres-cluster-ip-service.yml b/Kubernetes Project/postgres-cluster-ip-service.yml new file mode 100644 index 00000000..262ee818 --- /dev/null +++ b/Kubernetes Project/postgres-cluster-ip-service.yml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: Service +metadata: + name: postgres-cluster-ip-service +spec: + type: ClusterIP + selector: + component: postgres + ports: + - port: 5432 + targetPort: 5432 \ No newline at end of file diff --git a/Kubernetes Project/postgres-deployment.k8s.yml b/Kubernetes Project/postgres-deployment.k8s.yml new file mode 100644 index 00000000..1026726f --- /dev/null +++ b/Kubernetes Project/postgres-deployment.k8s.yml @@ -0,0 +1,35 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: postgres-deployment.k8s +spec: + replicas: 1 + selector: + matchLabels: + component: postgres + template: + metadata: + labels: + component: postgres + spec: + volumes: + - name: postgres-storage + persistentVolumeClaim: + claimName: database-persistent-volume-claim + containers: + - name: postgres + image: docker.io/postgres:latest + ports: + - containerPort: 5432 + volumeMounts: + - mountPath: /var/lib/postgresql/data + name: postgres-storage + subPath: postgres + env: + - name: POSTGRES_PASSWORD + valueFrom: + secretKeyRef: + name: pgpassword + key: POSTGRES_PASSWORD + - name: POSTGRES_DB + value: simple_blog_api diff --git a/Kubernetes Project/postgres-pvc-k8s.yml b/Kubernetes Project/postgres-pvc-k8s.yml new file mode 100644 index 00000000..54dfe56e --- /dev/null +++ b/Kubernetes Project/postgres-pvc-k8s.yml @@ -0,0 +1,10 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: database-persistent-volume-claim +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 2Gi \ No newline at end of file