diff --git a/Dockerfile b/Dockerfile index 14c74cca261ec6c659597a4603b380a2444f4478..dda0a2c9e64f0f60f9343fa0bf8a5e4bc30ac40a 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 4db41dd90b12efcd21105e992a36759355318dd5..c8a9b69e6b989e004d7396d9249b82c4cd8400d9 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 4d48e5cc8f04077391d5275548441fc24bbe3891..ef2430a2cfd9fb6fdcf88c3dce9ac9ef50b6343e 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 4d48e5cc8f04077391d5275548441fc24bbe3891..44c44a9b1806236d2b30bf8560e7118fac30f6eb 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 9b70fe7ceb0ecbe145fac119c7f9e3705e13164d..7828fe0508bdad524059621eb739a8e7d41951a1 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 182d88603a21b078293a14ef05e83dfa33d40c70..c3cd549f11ac17561f1638443ba828b1c1261e9f 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 0000000000000000000000000000000000000000..28f1910df50ccd85d81f6cf9dce20f9acd6b1280 --- /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 0000000000000000000000000000000000000000..c1cb5d4c43156607284d6a8e0539ff91765fa738 --- /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