From 5fdf2e7d5eae512e9b2a99c424f925c709a4680c Mon Sep 17 00:00:00 2001
From: Fionn McGoldrick <fionnmc123@gmail.com>
Date: Tue, 17 Jun 2025 15:10:30 +0200
Subject: [PATCH] Made yaml files for mongo container and rearranged port
 directories for minikube

---
 Dockerfile                   |  1 +
 backend/server.js            |  7 ++++---
 book-rate-deployment.yaml    | 13 ++++++-------
 book-rate-service.yaml       | 29 ++++++++++-------------------
 frontend/all-books.html      |  4 ++--
 frontend/book-application.js |  4 ++--
 mongo-deployment.yaml        | 26 ++++++++++++++++++++++++++
 mongo-service.yaml           | 12 ++++++++++++
 8 files changed, 63 insertions(+), 33 deletions(-)
 create mode 100644 mongo-deployment.yaml
 create mode 100644 mongo-service.yaml

diff --git a/Dockerfile b/Dockerfile
index 14c74cc..dda0a2c 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -21,3 +21,4 @@ EXPOSE 5000
 
 # Start backend
 CMD ["node", "server.js"]
+
diff --git a/backend/server.js b/backend/server.js
index 4db41dd..c8a9b69 100644
--- a/backend/server.js
+++ b/backend/server.js
@@ -16,7 +16,7 @@ const PORT = process.env.PORT || 3000; // <--- Dynamic port
 app.use(express.json());
 
 // Connect to MongoDB
-mongoose.connect('mongodb://mongo-dev:27017/BookDatabase', {
+mongoose.connect('mongodb://mongo-service:27017/BookDatabase', {
     useNewUrlParser: true,
     useUnifiedTopology: true,
 })
@@ -33,10 +33,11 @@ const bookSchema = new mongoose.Schema({
 
 const Book = mongoose.model('Book', bookSchema);
 
-app.listen(PORT, () => {
-    console.log(`Server is running on port ${PORT}`);
+app.listen(3000, '0.0.0.0', () => {
+  console.log('Server is running on port 3000');
 });
 
+
 // POST route to add a book to the database
 app.post('/submit', async (req, res) => {
     try {
diff --git a/book-rate-deployment.yaml b/book-rate-deployment.yaml
index 4d48e5c..ef2430a 100644
--- a/book-rate-deployment.yaml
+++ b/book-rate-deployment.yaml
@@ -13,10 +13,9 @@ spec:
         app: dockercontainerizationproject
     spec:
       containers:
-      - name: dockercontainerizationproject
-        image: your-dockerhub-username/dockercontainerizationproject:latest
-        ports:
-        - containerPort: 3000
-        env:
-        - name: MONGO_URI
-          value: mongodb://mongo-service:27017/BookDatabase
+        - name: dockercontainerizationproject
+          image: dockercontainerizationproject:latest
+          imagePullPolicy: Never
+          ports:
+            - containerPort: 3000
+
diff --git a/book-rate-service.yaml b/book-rate-service.yaml
index 4d48e5c..44c44a9 100644
--- a/book-rate-service.yaml
+++ b/book-rate-service.yaml
@@ -1,22 +1,13 @@
-apiVersion: apps/v1
-kind: Deployment
+apiVersion: v1
+kind: Service
 metadata:
-  name: dockercontainerizationproject
+  name: book-rate-service
 spec:
-  replicas: 1
   selector:
-    matchLabels:
-      app: dockercontainerizationproject
-  template:
-    metadata:
-      labels:
-        app: dockercontainerizationproject
-    spec:
-      containers:
-      - name: dockercontainerizationproject
-        image: your-dockerhub-username/dockercontainerizationproject:latest
-        ports:
-        - containerPort: 3000
-        env:
-        - name: MONGO_URI
-          value: mongodb://mongo-service:27017/BookDatabase
+    app: dockercontainerizationproject
+  ports:
+    - protocol: TCP
+      port: 80
+      targetPort: 3000
+      nodePort: 32179
+  type: NodePort
diff --git a/frontend/all-books.html b/frontend/all-books.html
index 9b70fe7..7828fe0 100644
--- a/frontend/all-books.html
+++ b/frontend/all-books.html
@@ -70,7 +70,7 @@
     /// Fetch and display all books
     document.addEventListener('DOMContentLoaded', async () => {
       try {
-        const response = await axios.get('http://localhost:3000/books');
+        const response = await axios.get(`${window.location.origin}/books`);
         const books = response.data;
         const booksContainer = document.getElementById('books-container'); // Get the container for books
 
@@ -105,7 +105,7 @@
             const bookId = e.target.getAttribute('data-id');
             if (confirm('Are you sure you want to delete this book?')) {
               try {
-                await axios.delete(`http://localhost:3000/books/${bookId}`);
+               await axios.delete(`${window.location.origin}/books/${bookId}`);
                 e.target.closest('.book-card').remove();
               } catch (err) {
                 console.error('Failed to delete book:', err);
diff --git a/frontend/book-application.js b/frontend/book-application.js
index 182d886..c3cd549 100644
--- a/frontend/book-application.js
+++ b/frontend/book-application.js
@@ -9,7 +9,7 @@ form.addEventListener('submit', async function (e) {
     const rating = document.getElementById('rating').value;
 
     try {
-        const response = await axios.post('http://localhost:3000/submit', {
+        const response = await axios.post(`${window.location.origin}/submit`, {
             title,
             description,
             rating
@@ -17,7 +17,7 @@ form.addEventListener('submit', async function (e) {
 
         console.log('Server response:', response.data);
         alert('Book submitted successfully!');
-        form.reset(); 
+        form.reset();
 
     } catch (error) {
         console.error('Submission failed:', error);
diff --git a/mongo-deployment.yaml b/mongo-deployment.yaml
new file mode 100644
index 0000000..28f1910
--- /dev/null
+++ b/mongo-deployment.yaml
@@ -0,0 +1,26 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: mongo-deployment
+spec:
+  replicas: 1
+  selector:
+    matchLabels:
+      app: mongo
+  template:
+    metadata:
+      labels:
+        app: mongo
+    spec:
+      containers:
+        - name: mongo
+          image: mongo
+          ports:
+            - containerPort: 27017
+          volumeMounts:
+            - name: mongo-storage
+              mountPath: /data/db
+      volumes:
+        - name: mongo-storage
+          emptyDir: {}
+
diff --git a/mongo-service.yaml b/mongo-service.yaml
new file mode 100644
index 0000000..c1cb5d4
--- /dev/null
+++ b/mongo-service.yaml
@@ -0,0 +1,12 @@
+apiVersion: v1
+kind: Service
+metadata:
+  name: mongo-service
+spec:
+  selector:
+    app: mongo
+  ports:
+    - protocol: TCP
+      port: 27017
+      targetPort: 27017
+  type: ClusterIP
-- 
GitLab