diff --git a/.env b/.env
new file mode 100644
index 0000000..7a198cf
--- /dev/null
+++ b/.env
@@ -0,0 +1,6 @@
+MYSQL_HOST=172.31.28.241
+MYSQL_USER=root
+MYSQL_PASSWORD=root@@123
+MYSQL_NAME=hms
+MYSQL_ROOT_PASSWORD=root@@123
+MYSQL_PORT=3306
diff --git a/1 b/1
new file mode 100644
index 0000000..26b842f
--- /dev/null
+++ b/1
@@ -0,0 +1,33 @@
+services:
+ # Use a more descriptive service name
+ frontend:
+ build: ./Doctor-Patient-Portal # Build the frontend image from the current directory
+ ports:
+ - "8083:8083"
+ # Map container port 8085 to host port 8080 (standard HTTP)
+ environment:
+ - MYSQL_HOST=${MYSQL_HOST} # Use the service name of the database container
+ - MYSQL_NAME=${MYSQL_NAME} # Standard MySQL port # Add other environment variables from .env (see note)
+ - MYSQL_PASSWORD=${MYSQL_PASSWORD}
+ - MYSQL_USER=${MYSQL_USER}
+ depends_on:
+ - db # Ensure database is ready before starting frontend
+
+
+
+ # Use a more descriptive service name
+ db:
+ image: mysql:8.0 # Build the database image from the directory named 'db'
+ ports:
+ - "3306:3306"
+ environment:
+ - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} # Consider using a stronger password
+ - MYSQL_NAME=${MYSQL_NAME}
+ - MYSQL_PASSWORD=${MYSQL_PASSWORD}
+ volumes:
+ - ./init.sql:/docker-entrypoint-initdb.d/init.sql
+ healthcheck:
+ test: ["CMD","mysqladmin","ping"]
+ interval: 10s
+ timeout: 5s
+ retries: 3
diff --git a/Doctor-Patient-Portal/1 b/Doctor-Patient-Portal/1
new file mode 100644
index 0000000..b0132ce
--- /dev/null
+++ b/Doctor-Patient-Portal/1
@@ -0,0 +1,10 @@
+FROM openjdk:17-alpine AS builder
+RUN apk add --no-cache ca-certificates && update-ca-certificates
+WORKDIR /app
+RUN apk add --no-cache maven
+COPY . .
+RUN mvn clean package -DskipTests=true
+FROM tomcat:9-alpine
+COPY --from=builder /app/target/*.war /usr/local/tomcat/webapps/
+EXPOSE 8080
+CMD ["catalina.sh", "run"]
diff --git a/Doctor-Patient-Portal/Dockerfile b/Doctor-Patient-Portal/Dockerfile
new file mode 100644
index 0000000..cdf62a1
--- /dev/null
+++ b/Doctor-Patient-Portal/Dockerfile
@@ -0,0 +1,13 @@
+# Builder stage
+FROM maven:3.8.5-openjdk-17-slim AS builder
+WORKDIR /app
+COPY pom.xml .
+RUN mvn dependency:go-offline
+COPY src ./src
+RUN mvn package
+
+# Tomcat stage
+FROM tomcat:9-alpine
+COPY --from=builder /app/target/*.war /usr/local/tomcat/webapps/
+EXPOSE 8080
+CMD ["catalina.sh", "run"]
diff --git a/Doctor-Patient-Portal/Jenkinsfile b/Doctor-Patient-Portal/Jenkinsfile
new file mode 100644
index 0000000..b956aa3
--- /dev/null
+++ b/Doctor-Patient-Portal/Jenkinsfile
@@ -0,0 +1,115 @@
+pipeline {
+ agent any
+
+ tools {
+ jdk 'jdk'
+ maven 'maven'
+ }
+
+ environment {
+ SCANNER_HOME= tool 'sonar-scanner'
+ }
+
+ stages {
+ stage('Git Checkout') {
+ steps {
+ echo 'git login'
+ git branch: 'main', changelog: false, poll: false, url: 'https://github.com/17J/Doctor-Patient-Portal-AdvanceJavaWebProject.git'
+ }
+ }
+ stage('Compile') {
+ steps {
+ dir('/var/lib/jenkins/workspace/doctor-portal/Doctor-Patient-Portal/') {
+ sh "mvn compile"
+ }
+ }
+ }
+ stage('Test') {
+ steps {
+ dir('/var/lib/jenkins/workspace/doctor-portal/Doctor-Patient-Portal/') {
+ sh "mvn test -DskipTests=true"
+ }
+ }
+ }
+ stage('File System Scan') {
+ steps {
+ sh "trivy fs --format table -o trivy-fs-report.html ."
+ }
+ }
+ stage('SonarQube Analsyis') {
+ steps {
+ withSonarQubeEnv('sonar-scanner') {
+ sh ''' $SCANNER_HOME/bin/sonar-scanner -Dsonar.projectName=doctor -Dsonar.projectKey=doctor \
+ -Dsonar.java.binaries=. '''
+ }
+ }
+ }
+ stage('Quality Gate') {
+ steps {
+ script {
+ waitForQualityGate abortPipeline: false, credentialsId: 'sonar-cred'
+ }
+ }
+ }
+ stage('Build') {
+ steps {
+ dir('/var/lib/jenkins/workspace/doctor-portal/Doctor-Patient-Portal/') {
+ sh "mvn package -DskipTests=true"
+ }
+ }
+ }
+ stage('Build & Tag Docker Image') {
+ steps {
+ script {
+ withDockerRegistry(credentialsId: 'docker-cred', toolName: 'docker') {
+ dir('/var/lib/jenkins/workspace/doctor-portal/Doctor-Patient-Portal/') {
+ sh "docker build -t maind ."
+ sh "docker tag maind 17rj/doctor-patient"
+ }
+
+
+ }
+ }
+ }
+ }
+ stage('Docker Image Scan') {
+ steps {
+ sh "trivy image --format table -o trivy-image-report.html 17rj/doctor-patient "
+ }
+ }
+ stage('Docker Image Push') {
+ steps {
+ script {
+ withDockerRegistry(credentialsId: 'docker-cred', toolName: 'docker') {
+ dir('/var/lib/jenkins/workspace/doctor-portal/Doctor-Patient-Portal/') {
+ sh "docker push 17rj/doctor-patient:latest"
+ }
+
+ }
+ }
+ }
+ }
+ stage('Deploy To Kubernetes') {
+ steps {
+ withKubeConfig(caCertificate: '', clusterName: 'main-eks17', contextName: '', credentialsId: 'kube-cred', namespace: 'webapps', restrictKubeConfigAccess: false, serverUrl: 'https://4D4C6465D0EABEF232FFC5BE0AA9F3B3.gr7.us-east-1.eks.amazonaws.com') {
+ dir('/var/lib/jenkins/workspace/doctor-portal/K8s/') {
+ sh "kubectl apply -f fullstack-db.yml -n webapps"
+ sh "kubectl apply -f fullstack-service-deployment.yml -n webapps"
+ sleep 60
+ }
+ }
+ }
+ }
+ stage('Verify To Kubernetes') {
+ steps {
+ withKubeConfig(caCertificate: '', clusterName: 'main-eks17', contextName: '', credentialsId: 'kube-cred', namespace: 'webapps', restrictKubeConfigAccess: false, serverUrl: 'https://4D4C6465D0EABEF232FFC5BE0AA9F3B3.gr7.us-east-1.eks.amazonaws.com') {
+
+ sh "kubectl get pods -n webapps"
+ sh "kubectl get svc -n webapps"
+
+
+ }
+ }
+ }
+ }
+}
diff --git a/Doctor-Patient-Portal/pom.xml b/Doctor-Patient-Portal/pom.xml
index 0b7669a..113d7a3 100644
--- a/Doctor-Patient-Portal/pom.xml
+++ b/Doctor-Patient-Portal/pom.xml
@@ -54,4 +54,19 @@
Doctor-Patient-Portal
+
+ 1.8
+ 1.8
+
+
+
+ maven-releases
+ http://34.207.189.118:8081/repository/maven-releases/
+
+
+ maven-snapshots
+ http://34.207.189.118:8081/repository/maven-snapshots/
+
+
+
diff --git a/Doctor-Patient-Portal/src/main/application.properties b/Doctor-Patient-Portal/src/main/application.properties
new file mode 100644
index 0000000..ad488fe
--- /dev/null
+++ b/Doctor-Patient-Portal/src/main/application.properties
@@ -0,0 +1,4 @@
+spring.datasource.url=jdbc:mysql://:/
+spring.datasource.username=
+spring.datasource.password=
+spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
diff --git a/Doctor-Patient-Portal/src/main/java/com/hms/db/DBConnection.java b/Doctor-Patient-Portal/src/main/java/com/hms/db/DBConnection.java
index 4bb4c9a..5027a69 100644
--- a/Doctor-Patient-Portal/src/main/java/com/hms/db/DBConnection.java
+++ b/Doctor-Patient-Portal/src/main/java/com/hms/db/DBConnection.java
@@ -15,7 +15,7 @@ public static Connection getConn() {
Class.forName("com.mysql.cj.jdbc.Driver");
//step:2- create a connection
- conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/hospital","root","wasim");
+ conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/hms","root","root@@123");
} catch (Exception e) {
e.printStackTrace();
diff --git a/Doctor-Patient-Portal/target/classes/com/hms/admin/servlet/AdminLoginServlet.class b/Doctor-Patient-Portal/target/classes/com/hms/admin/servlet/AdminLoginServlet.class
deleted file mode 100644
index 3106d87..0000000
Binary files a/Doctor-Patient-Portal/target/classes/com/hms/admin/servlet/AdminLoginServlet.class and /dev/null differ
diff --git a/Doctor-Patient-Portal/target/classes/com/hms/admin/servlet/AdminLogoutServlet.class b/Doctor-Patient-Portal/target/classes/com/hms/admin/servlet/AdminLogoutServlet.class
deleted file mode 100644
index 48a01ac..0000000
Binary files a/Doctor-Patient-Portal/target/classes/com/hms/admin/servlet/AdminLogoutServlet.class and /dev/null differ
diff --git a/Doctor-Patient-Portal/target/classes/com/hms/admin/servlet/DeleteDoctorServlet.class b/Doctor-Patient-Portal/target/classes/com/hms/admin/servlet/DeleteDoctorServlet.class
deleted file mode 100644
index 31719cf..0000000
Binary files a/Doctor-Patient-Portal/target/classes/com/hms/admin/servlet/DeleteDoctorServlet.class and /dev/null differ
diff --git a/Doctor-Patient-Portal/target/classes/com/hms/admin/servlet/DoctorServlet.class b/Doctor-Patient-Portal/target/classes/com/hms/admin/servlet/DoctorServlet.class
deleted file mode 100644
index 9cd5fd3..0000000
Binary files a/Doctor-Patient-Portal/target/classes/com/hms/admin/servlet/DoctorServlet.class and /dev/null differ
diff --git a/Doctor-Patient-Portal/target/classes/com/hms/admin/servlet/SpecialistServlet.class b/Doctor-Patient-Portal/target/classes/com/hms/admin/servlet/SpecialistServlet.class
deleted file mode 100644
index 748428a..0000000
Binary files a/Doctor-Patient-Portal/target/classes/com/hms/admin/servlet/SpecialistServlet.class and /dev/null differ
diff --git a/Doctor-Patient-Portal/target/classes/com/hms/admin/servlet/UpdateDoctorServlet.class b/Doctor-Patient-Portal/target/classes/com/hms/admin/servlet/UpdateDoctorServlet.class
deleted file mode 100644
index e1cff43..0000000
Binary files a/Doctor-Patient-Portal/target/classes/com/hms/admin/servlet/UpdateDoctorServlet.class and /dev/null differ
diff --git a/Doctor-Patient-Portal/target/classes/com/hms/dao/AppointmentDAO.class b/Doctor-Patient-Portal/target/classes/com/hms/dao/AppointmentDAO.class
deleted file mode 100644
index 31d2b89..0000000
Binary files a/Doctor-Patient-Portal/target/classes/com/hms/dao/AppointmentDAO.class and /dev/null differ
diff --git a/Doctor-Patient-Portal/target/classes/com/hms/dao/DoctorDAO.class b/Doctor-Patient-Portal/target/classes/com/hms/dao/DoctorDAO.class
deleted file mode 100644
index 3b9f9f4..0000000
Binary files a/Doctor-Patient-Portal/target/classes/com/hms/dao/DoctorDAO.class and /dev/null differ
diff --git a/Doctor-Patient-Portal/target/classes/com/hms/dao/SpecialistDAO.class b/Doctor-Patient-Portal/target/classes/com/hms/dao/SpecialistDAO.class
deleted file mode 100644
index 4d30220..0000000
Binary files a/Doctor-Patient-Portal/target/classes/com/hms/dao/SpecialistDAO.class and /dev/null differ
diff --git a/Doctor-Patient-Portal/target/classes/com/hms/dao/UserDAO.class b/Doctor-Patient-Portal/target/classes/com/hms/dao/UserDAO.class
deleted file mode 100644
index 6718112..0000000
Binary files a/Doctor-Patient-Portal/target/classes/com/hms/dao/UserDAO.class and /dev/null differ
diff --git a/Doctor-Patient-Portal/target/classes/com/hms/db/DBConnection.class b/Doctor-Patient-Portal/target/classes/com/hms/db/DBConnection.class
deleted file mode 100644
index 7a8af4e..0000000
Binary files a/Doctor-Patient-Portal/target/classes/com/hms/db/DBConnection.class and /dev/null differ
diff --git a/Doctor-Patient-Portal/target/classes/com/hms/doctor/servlet/DoctorChangePassword.class b/Doctor-Patient-Portal/target/classes/com/hms/doctor/servlet/DoctorChangePassword.class
deleted file mode 100644
index cbd0aeb..0000000
Binary files a/Doctor-Patient-Portal/target/classes/com/hms/doctor/servlet/DoctorChangePassword.class and /dev/null differ
diff --git a/Doctor-Patient-Portal/target/classes/com/hms/doctor/servlet/DoctorEditProfileServlet.class b/Doctor-Patient-Portal/target/classes/com/hms/doctor/servlet/DoctorEditProfileServlet.class
deleted file mode 100644
index 6d936a5..0000000
Binary files a/Doctor-Patient-Portal/target/classes/com/hms/doctor/servlet/DoctorEditProfileServlet.class and /dev/null differ
diff --git a/Doctor-Patient-Portal/target/classes/com/hms/doctor/servlet/DoctorLoginServlet.class b/Doctor-Patient-Portal/target/classes/com/hms/doctor/servlet/DoctorLoginServlet.class
deleted file mode 100644
index c503997..0000000
Binary files a/Doctor-Patient-Portal/target/classes/com/hms/doctor/servlet/DoctorLoginServlet.class and /dev/null differ
diff --git a/Doctor-Patient-Portal/target/classes/com/hms/doctor/servlet/DoctorLogoutServlet.class b/Doctor-Patient-Portal/target/classes/com/hms/doctor/servlet/DoctorLogoutServlet.class
deleted file mode 100644
index ff5af57..0000000
Binary files a/Doctor-Patient-Portal/target/classes/com/hms/doctor/servlet/DoctorLogoutServlet.class and /dev/null differ
diff --git a/Doctor-Patient-Portal/target/classes/com/hms/doctor/servlet/UpdateStatus.class b/Doctor-Patient-Portal/target/classes/com/hms/doctor/servlet/UpdateStatus.class
deleted file mode 100644
index 042723b..0000000
Binary files a/Doctor-Patient-Portal/target/classes/com/hms/doctor/servlet/UpdateStatus.class and /dev/null differ
diff --git a/Doctor-Patient-Portal/target/classes/com/hms/entity/Appointment.class b/Doctor-Patient-Portal/target/classes/com/hms/entity/Appointment.class
deleted file mode 100644
index a83cd11..0000000
Binary files a/Doctor-Patient-Portal/target/classes/com/hms/entity/Appointment.class and /dev/null differ
diff --git a/Doctor-Patient-Portal/target/classes/com/hms/entity/Doctor.class b/Doctor-Patient-Portal/target/classes/com/hms/entity/Doctor.class
deleted file mode 100644
index 15cd34c..0000000
Binary files a/Doctor-Patient-Portal/target/classes/com/hms/entity/Doctor.class and /dev/null differ
diff --git a/Doctor-Patient-Portal/target/classes/com/hms/entity/Specialist.class b/Doctor-Patient-Portal/target/classes/com/hms/entity/Specialist.class
deleted file mode 100644
index fef3d01..0000000
Binary files a/Doctor-Patient-Portal/target/classes/com/hms/entity/Specialist.class and /dev/null differ
diff --git a/Doctor-Patient-Portal/target/classes/com/hms/entity/User.class b/Doctor-Patient-Portal/target/classes/com/hms/entity/User.class
deleted file mode 100644
index 4426d20..0000000
Binary files a/Doctor-Patient-Portal/target/classes/com/hms/entity/User.class and /dev/null differ
diff --git a/Doctor-Patient-Portal/target/classes/com/hms/user/servlet/AppointmentServlet.class b/Doctor-Patient-Portal/target/classes/com/hms/user/servlet/AppointmentServlet.class
deleted file mode 100644
index 3b42479..0000000
Binary files a/Doctor-Patient-Portal/target/classes/com/hms/user/servlet/AppointmentServlet.class and /dev/null differ
diff --git a/Doctor-Patient-Portal/target/classes/com/hms/user/servlet/ChangePasswordServlet.class b/Doctor-Patient-Portal/target/classes/com/hms/user/servlet/ChangePasswordServlet.class
deleted file mode 100644
index 5f4fcb6..0000000
Binary files a/Doctor-Patient-Portal/target/classes/com/hms/user/servlet/ChangePasswordServlet.class and /dev/null differ
diff --git a/Doctor-Patient-Portal/target/classes/com/hms/user/servlet/MyNewServlet.class b/Doctor-Patient-Portal/target/classes/com/hms/user/servlet/MyNewServlet.class
deleted file mode 100644
index b79f619..0000000
Binary files a/Doctor-Patient-Portal/target/classes/com/hms/user/servlet/MyNewServlet.class and /dev/null differ
diff --git a/Doctor-Patient-Portal/target/classes/com/hms/user/servlet/UserLoginServlet.class b/Doctor-Patient-Portal/target/classes/com/hms/user/servlet/UserLoginServlet.class
deleted file mode 100644
index da9f53e..0000000
Binary files a/Doctor-Patient-Portal/target/classes/com/hms/user/servlet/UserLoginServlet.class and /dev/null differ
diff --git a/Doctor-Patient-Portal/target/classes/com/hms/user/servlet/UserLogoutServlet.class b/Doctor-Patient-Portal/target/classes/com/hms/user/servlet/UserLogoutServlet.class
deleted file mode 100644
index 5487159..0000000
Binary files a/Doctor-Patient-Portal/target/classes/com/hms/user/servlet/UserLogoutServlet.class and /dev/null differ
diff --git a/Doctor-Patient-Portal/target/classes/com/hms/user/servlet/UserRegisterServlet.class b/Doctor-Patient-Portal/target/classes/com/hms/user/servlet/UserRegisterServlet.class
deleted file mode 100644
index b12d40a..0000000
Binary files a/Doctor-Patient-Portal/target/classes/com/hms/user/servlet/UserRegisterServlet.class and /dev/null differ
diff --git a/Doctor-Patient-Portal/target/m2e-wtp/web-resources/META-INF/MANIFEST.MF b/Doctor-Patient-Portal/target/m2e-wtp/web-resources/META-INF/MANIFEST.MF
deleted file mode 100644
index ca0356f..0000000
--- a/Doctor-Patient-Portal/target/m2e-wtp/web-resources/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,4 +0,0 @@
-Manifest-Version: 1.0
-Build-Jdk-Spec: 18
-Created-By: Maven Integration for Eclipse
-
diff --git a/Doctor-Patient-Portal/target/m2e-wtp/web-resources/META-INF/maven/com.hms/Doctor-Patient-Portal/pom.properties b/Doctor-Patient-Portal/target/m2e-wtp/web-resources/META-INF/maven/com.hms/Doctor-Patient-Portal/pom.properties
deleted file mode 100644
index 5d871cb..0000000
--- a/Doctor-Patient-Portal/target/m2e-wtp/web-resources/META-INF/maven/com.hms/Doctor-Patient-Portal/pom.properties
+++ /dev/null
@@ -1,7 +0,0 @@
-#Generated by Maven Integration for Eclipse
-#Fri Dec 02 13:54:47 BDT 2022
-artifactId=Doctor-Patient-Portal
-groupId=com.hms
-m2e.projectLocation=F\:\\0-Wasim\\Eclipse Web project workspace\\Doctor-Patient-Portal
-m2e.projectName=Doctor-Patient-Portal
-version=0.0.1-SNAPSHOT
diff --git a/Doctor-Patient-Portal/target/m2e-wtp/web-resources/META-INF/maven/com.hms/Doctor-Patient-Portal/pom.xml b/Doctor-Patient-Portal/target/m2e-wtp/web-resources/META-INF/maven/com.hms/Doctor-Patient-Portal/pom.xml
deleted file mode 100644
index 0b7669a..0000000
--- a/Doctor-Patient-Portal/target/m2e-wtp/web-resources/META-INF/maven/com.hms/Doctor-Patient-Portal/pom.xml
+++ /dev/null
@@ -1,57 +0,0 @@
-
- 4.0.0
- com.hms
- Doctor-Patient-Portal
- war
- 0.0.1-SNAPSHOT
- Doctor-Patient-Portal Maven Webapp
- http://maven.apache.org
-
-
- junit
- junit
- 3.8.1
- test
-
-
-
- javax.servlet
- javax.servlet-api
- 4.0.1
- provided
-
-
-
-
- mysql
- mysql-connector-java
- 8.0.28
-
-
-
-
- javax.servlet
- jstl
- 1.2
-
-
-
-
- javax.el
- javax.el-api
- 3.0.0
-
-
-
-
-
-
-
- org.apache.maven.plugins
- maven-war-plugin
- 3.3.1
-
-
- Doctor-Patient-Portal
-
-
diff --git a/K8s/fullstack-db.yml b/K8s/fullstack-db.yml
new file mode 100644
index 0000000..15c7ce5
--- /dev/null
+++ b/K8s/fullstack-db.yml
@@ -0,0 +1,137 @@
+---
+apiVersion: v1
+kind: Secret
+metadata:
+ name: mysql-secret
+type: Opaque
+data:
+ password: cm9vdEBAMTIz
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: mysql
+ namespace: webapps
+ labels:
+ app: mysql
+spec:
+ replicas: 1
+ selector:
+ matchLabels:
+ app: mysql
+ template:
+ metadata:
+ labels:
+ app: mysql
+ spec:
+ containers:
+ - name: mysql
+ image: mysql:latest
+ ports:
+ - containerPort: 3306
+ env:
+ - name: MYSQL_ROOT_PASSWORD
+ valueFrom:
+ secretKeyRef:
+ name: mysql-secret
+ key: password
+
+ volumeMounts:
+ - name: my-volume
+ mountPath: /data
+ - name: my-sql-script
+ mountPath: /docker-entrypoint-initdb.d
+ volumes:
+ - name: my-volume
+ persistentVolumeClaim:
+ claimName: mysql-pv-claim-new
+ - name: my-sql-script
+ configMap:
+ name: my-sql-script
+
+---
+apiVersion: v1
+kind: Service
+metadata:
+ name: mysql-service
+ namespace: webapps
+spec:
+ selector:
+ app: mysql
+ ports:
+ - protocol: TCP
+ port: 3306
+ targetPort: 3306
+ type: ClusterIP
+
+---
+apiVersion: v1
+kind: ConfigMap
+metadata:
+ name: my-sql-script
+data:
+ init.sql: |
+ CREATE DATABASE IF NOT EXISTS hms;
+ #CREATE USER 'root'@'mysql-service' IDENTIFIED BY 'root@@123';
+ #GRANT ALL PRIVILEGES ON hms.* TO 'root'@'mysql-service';
+ USE hms;
+ CREATE TABLE users (
+ id INT NOT NULL PRIMARY KEY,
+ full_name VARCHAR(255) NOT NULL,
+ email VARCHAR(255) NOT NULL UNIQUE,
+ password VARCHAR(255) NOT NULL
+ );
+ CREATE TABLE user_details (
+ id INT PRIMARY KEY AUTO_INCREMENT,
+ full_name VARCHAR(255) NOT NULL,
+ email VARCHAR(255) NOT NULL UNIQUE,
+ password VARCHAR(255) NOT NULL
+ );
+ CREATE TABLE doctor (
+ id INT PRIMARY KEY AUTO_INCREMENT,
+ fullName VARCHAR(255) NOT NULL,
+ dateOfBirth DATE,
+ qualification VARCHAR(255),
+ specialist VARCHAR(255),
+ email VARCHAR(255) NOT NULL UNIQUE,
+ phone VARCHAR(20),
+ password VARCHAR(255) NOT NULL
+ );
+ CREATE TABLE specialist (
+ id INT PRIMARY KEY AUTO_INCREMENT,
+ specialist_name VARCHAR(255) NOT NULL UNIQUE
+ );
+ CREATE TABLE appointment (
+ id INT PRIMARY KEY AUTO_INCREMENT,
+ userId INT NOT NULL,
+ fullName VARCHAR(255) NOT NULL,
+ gender VARCHAR(10),
+ age VARCHAR(3),
+ appointmentDate DATETIME NOT NULL,
+ email VARCHAR(255) NOT NULL,
+ phone VARCHAR(20),
+ diseases TEXT,
+ doctorId INT NOT NULL,
+ address TEXT,
+ status VARCHAR(255)
+ );
+ ALTER TABLE appointment
+ ADD CONSTRAINT fk_appointment_doctor FOREIGN KEY (doctorId) REFERENCES doctor(id);
+ INSERT INTO doctor (fullName, dateOfBirth, qualification, specialist, email, phone, password)
+ VALUES ('Dr. John Doe', '1980-01-01', 'MD', 'General Medicine', 'johndoe@example.com', '1234567890', 'password123');
+ INSERT INTO doctor (fullName, dateOfBirth, qualification, specialist, email, phone, password)
+ VALUES ('Dr. Maria', '1975-01-01', 'MBBS', 'Dermatology', 'maria@example.com', '1234567890', 'password123');
+
+---
+
+apiVersion: v1
+kind: PersistentVolumeClaim
+metadata:
+ name: mysql-pv-claim-new
+spec:
+ accessModes:
+ - ReadWriteOnce
+ resources:
+ requests:
+ storage: 1Gi
+ # storageClassName: my-ebs-sc
diff --git a/K8s/fullstack-service-deployment.yml b/K8s/fullstack-service-deployment.yml
new file mode 100644
index 0000000..67762f0
--- /dev/null
+++ b/K8s/fullstack-service-deployment.yml
@@ -0,0 +1,39 @@
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: frontend-deployment
+ namespace: webapps
+ labels:
+ app: frontend
+spec:
+ replicas: 1
+ selector:
+ matchLabels:
+ app: frontend
+ template:
+ metadata:
+ labels:
+ app: frontend
+ spec:
+ containers:
+ - name: frontend
+ image: 17rj/doctor_patient_portals:latest
+ ports:
+ - containerPort: 8080
+
+
+---
+apiVersion: v1
+kind: Service
+metadata:
+ name: frontend-service
+ namespace: webapps
+spec:
+ selector:
+ app: frontend
+ type: LoadBalancer
+ ports:
+ - protocol: TCP
+ port: 8080
+ targetPort: 8080
diff --git a/MY_EKS_Terraform/main.tf b/MY_EKS_Terraform/main.tf
new file mode 100644
index 0000000..d3e200b
--- /dev/null
+++ b/MY_EKS_Terraform/main.tf
@@ -0,0 +1,175 @@
+provider "aws" {
+ region = "us-east-1"
+}
+
+resource "aws_vpc" "latestdevops_vpc" {
+ cidr_block = "10.0.0.0/16"
+
+ tags = {
+ Name = "latestdevops-vpc"
+ }
+}
+
+resource "aws_subnet" "latestdevops_subnet" {
+ count = 2
+ vpc_id = aws_vpc.latestdevops_vpc.id
+ cidr_block = cidrsubnet(aws_vpc.latestdevops_vpc.cidr_block, 8, count.index)
+ availability_zone = element(["us-east-1a", "us-east-1b"], count.index)
+ map_public_ip_on_launch = true
+
+ tags = {
+ Name = "latestdevops-subnet-${count.index}"
+ }
+}
+
+resource "aws_internet_gateway" "latestdevops_igw" {
+ vpc_id = aws_vpc.latestdevops_vpc.id
+
+ tags = {
+ Name = "latestdevops-igw"
+ }
+}
+
+resource "aws_route_table" "latestdevops_route_table" {
+ vpc_id = aws_vpc.latestdevops_vpc.id
+
+ route {
+ cidr_block = "0.0.0.0/0"
+ gateway_id = aws_internet_gateway.latestdevops_igw.id
+ }
+
+ tags = {
+ Name = "latestdevops-route-table"
+ }
+}
+
+resource "aws_route_table_association" "a" {
+ count = 2
+ subnet_id = aws_subnet.latestdevops_subnet[count.index].id
+ route_table_id = aws_route_table.latestdevops_route_table.id
+}
+
+resource "aws_security_group" "latestdevops_cluster_sg" {
+ vpc_id = aws_vpc.latestdevops_vpc.id
+
+ egress {
+ from_port = 0
+ to_port = 0
+ protocol = "-1"
+ cidr_blocks = ["0.0.0.0/0"]
+ }
+
+ tags = {
+ Name = "latestdevops-cluster-sg"
+ }
+}
+
+resource "aws_security_group" "latestdevops_node_sg" {
+ vpc_id = aws_vpc.latestdevops_vpc.id
+
+ ingress {
+ from_port = 0
+ to_port = 0
+ protocol = "-1"
+ cidr_blocks = ["0.0.0.0/0"]
+ }
+
+ egress {
+ from_port = 0
+ to_port = 0
+ protocol = "-1"
+ cidr_blocks = ["0.0.0.0/0"]
+ }
+
+ tags = {
+ Name = "latestdevops-node-sg"
+ }
+}
+
+resource "aws_eks_cluster" "latestdevops" {
+ name = "latestdevops-cluster"
+ role_arn = aws_iam_role.latestdevops_cluster_role.arn
+
+ vpc_config {
+ subnet_ids = aws_subnet.latestdevops_subnet[*].id
+ security_group_ids = [aws_security_group.latestdevops_cluster_sg.id]
+ }
+}
+
+resource "aws_eks_node_group" "latestdevops" {
+ cluster_name = aws_eks_cluster.latestdevops.name
+ node_group_name = "latestdevops-node-group"
+ node_role_arn = aws_iam_role.latestdevops_node_group_role.arn
+ subnet_ids = aws_subnet.latestdevops_subnet[*].id
+
+ scaling_config {
+ desired_size = 3
+ max_size = 3
+ min_size = 3
+ }
+
+ instance_types = ["t2.large"]
+
+ remote_access {
+ ec2_ssh_key = var.ssh_key_name
+ source_security_group_ids = [aws_security_group.latestdevops_node_sg.id]
+ }
+}
+
+resource "aws_iam_role" "latestdevops_cluster_role" {
+ name = "latestdevops-cluster-role"
+
+ assume_role_policy = <