From a45eb2569c3c6ed6abb7c13a0fccd08cc77246c3 Mon Sep 17 00:00:00 2001 From: Arnab-Afk Date: Mon, 8 Dec 2025 16:08:20 +0530 Subject: [PATCH] feat: Add Docker configuration for the application stack and implement client-side API for data management and Excel export. --- client/.dockerignore | 5 +++++ client/Dockerfile | 19 +++++++++++++++++++ client/src/api.js | 2 +- docker-compose.yml | 38 ++++++++++++++++++++++++++++++++++++++ server/.dockerignore | 4 ++++ server/Dockerfile | 12 ++++++++++++ 6 files changed, 79 insertions(+), 1 deletion(-) create mode 100644 client/.dockerignore create mode 100644 client/Dockerfile create mode 100644 docker-compose.yml create mode 100644 server/.dockerignore create mode 100644 server/Dockerfile diff --git a/client/.dockerignore b/client/.dockerignore new file mode 100644 index 0000000..66ab861 --- /dev/null +++ b/client/.dockerignore @@ -0,0 +1,5 @@ +node_modules +npm-debug.log +build +.git +.env diff --git a/client/Dockerfile b/client/Dockerfile new file mode 100644 index 0000000..3b39443 --- /dev/null +++ b/client/Dockerfile @@ -0,0 +1,19 @@ +# Stage 1: Build the React application +FROM node:18-alpine as build + +WORKDIR /app + +COPY package*.json ./ +RUN npm install + +COPY . . +RUN npm run build + +# Stage 2: Serve the application with Nginx +FROM nginx:alpine + +COPY --from=build /app/build /usr/share/nginx/html + +EXPOSE 80 + +CMD ["nginx", "-g", "daemon off;"] diff --git a/client/src/api.js b/client/src/api.js index f9bec06..5a3cafe 100644 --- a/client/src/api.js +++ b/client/src/api.js @@ -1,4 +1,4 @@ -const BASE_URL = "http://localhost:8080/api"; +const BASE_URL = process.env.REACT_APP_API_URL || "http://localhost:8080/api"; const XLSX = require("xlsx-js-style"); // Helper function for handling fetch requests diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..755773a --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,38 @@ +version: '3.8' + +services: + server: + build: ./server + ports: + - "8080:8080" + environment: + - mongoURI=mongodb://mongo:27017/appointment_to_examiner + depends_on: + - mongo + networks: + - app-network + + client: + build: ./client + ports: + - "3000:80" + depends_on: + - server + networks: + - app-network + + mongo: + image: mongo:latest + ports: + - "27017:27017" + volumes: + - mongo-data:/data/db + networks: + - app-network + +networks: + app-network: + driver: bridge + +volumes: + mongo-data: diff --git a/server/.dockerignore b/server/.dockerignore new file mode 100644 index 0000000..b8b83d3 --- /dev/null +++ b/server/.dockerignore @@ -0,0 +1,4 @@ +node_modules +npm-debug.log +.git +.env diff --git a/server/Dockerfile b/server/Dockerfile new file mode 100644 index 0000000..7916b01 --- /dev/null +++ b/server/Dockerfile @@ -0,0 +1,12 @@ +FROM node:18-alpine + +WORKDIR /app + +COPY package*.json ./ +RUN npm install + +COPY . . + +EXPOSE 8080 + +CMD ["npm", "start"]