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