From 94e6f5b89beb2d06dcf9ff98723ba81515b43308 Mon Sep 17 00:00:00 2001 From: MukeshAbhi Date: Mon, 20 Oct 2025 16:11:35 +0530 Subject: [PATCH 1/3] containerized the application --- backend/.dockerignore | 9 +++++++++ backend/.env.example | 5 +++++ backend/Dockerfile | 13 ++++++++++++ docker-compose.yml | 45 ++++++++++++++++++++++++++++++++++++++++++ frontend/.dockerignore | 9 +++++++++ frontend/Dockerfile | 17 ++++++++++++++++ 6 files changed, 98 insertions(+) create mode 100644 backend/.dockerignore create mode 100644 backend/.env.example create mode 100644 backend/Dockerfile create mode 100644 docker-compose.yml create mode 100644 frontend/.dockerignore create mode 100644 frontend/Dockerfile diff --git a/backend/.dockerignore b/backend/.dockerignore new file mode 100644 index 0000000..eb2eb41 --- /dev/null +++ b/backend/.dockerignore @@ -0,0 +1,9 @@ +node_modules +dist +build +.DS_Store +.env +.env.local +.env.development.local +.env.test.local +.env.production.local diff --git a/backend/.env.example b/backend/.env.example new file mode 100644 index 0000000..d0d9616 --- /dev/null +++ b/backend/.env.example @@ -0,0 +1,5 @@ +PORT=5000 +MONGO_URI=your-mongodb-atlas-uri +JWT_SECRET=your-secret-key +GEMINI_API_KEY=your-gemini-api-key +KEEP_ALIVE_URL=http://localhost:5000 \ No newline at end of file diff --git a/backend/Dockerfile b/backend/Dockerfile new file mode 100644 index 0000000..841527e --- /dev/null +++ b/backend/Dockerfile @@ -0,0 +1,13 @@ +FROM node:18-alpine + +WORKDIR /app + +COPY package*.json ./ + +RUN npm install + +COPY . . + +EXPOSE 5000 + +CMD ["npm", "start"] \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..e64a16d --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,45 @@ +version: '3.8' + +services: + mongo: + image: mongo + container_name: paisable-mongo + volumes: + - mongo-data:/data/db + networks: + - app-network + ports: + - "27017:27017" + + backend: + build: ./backend + container_name: backend + ports: + - "5000:5000" + environment: + - MONGO_URI=mongodb://mongo:27017/paisable + env_file: + - ./backend/.env + depends_on: + - mongo + networks: + - app-network + + frontend: + build: ./frontend + container_name: frontend + ports: + - "5173:80" + env_file: + - ./frontend/.env + depends_on: + - backend + networks: + - app-network + +networks: + app-network: + driver: bridge + +volumes: + mongo-data: \ No newline at end of file diff --git a/frontend/.dockerignore b/frontend/.dockerignore new file mode 100644 index 0000000..eb2eb41 --- /dev/null +++ b/frontend/.dockerignore @@ -0,0 +1,9 @@ +node_modules +dist +build +.DS_Store +.env +.env.local +.env.development.local +.env.test.local +.env.production.local diff --git a/frontend/Dockerfile b/frontend/Dockerfile new file mode 100644 index 0000000..3f6ed6c --- /dev/null +++ b/frontend/Dockerfile @@ -0,0 +1,17 @@ +# Stage 1 — Build the app +FROM node:18-alpine AS builder + +WORKDIR /app +COPY package*.json ./ +RUN npm install +COPY . . +RUN npm run build + +# Stage 2 — Serve with Nginx +FROM nginx:alpine + +COPY --from=builder /app/dist /usr/share/nginx/html + +EXPOSE 80 + +CMD ["nginx", "-g", "daemon off;"] \ No newline at end of file From 35cf95d9a01e613cee9c4a8606a3546cb7a6759e Mon Sep 17 00:00:00 2001 From: MukeshAbhi Date: Mon, 20 Oct 2025 16:24:06 +0530 Subject: [PATCH 2/3] updated .env.example --- frontend/.env.example | 1 + frontend/.gitignore | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 frontend/.env.example diff --git a/frontend/.env.example b/frontend/.env.example new file mode 100644 index 0000000..6ff1b0c --- /dev/null +++ b/frontend/.env.example @@ -0,0 +1 @@ +VITE_API_URL=http://localhost:5000/api \ No newline at end of file diff --git a/frontend/.gitignore b/frontend/.gitignore index a779547..0516b84 100644 --- a/frontend/.gitignore +++ b/frontend/.gitignore @@ -24,4 +24,4 @@ dist-ssr *.sln *.sw? .env -.env.* + From b511710dad2e176192ba8ec8948ea0cff017393d Mon Sep 17 00:00:00 2001 From: MukeshAbhi Date: Tue, 21 Oct 2025 17:59:11 +0530 Subject: [PATCH 3/3] added nginx.conf --- frontend/Dockerfile | 1 + frontend/nginx.conf | 15 +++++++++++++++ 2 files changed, 16 insertions(+) create mode 100644 frontend/nginx.conf diff --git a/frontend/Dockerfile b/frontend/Dockerfile index 3f6ed6c..79f3726 100644 --- a/frontend/Dockerfile +++ b/frontend/Dockerfile @@ -11,6 +11,7 @@ RUN npm run build FROM nginx:alpine COPY --from=builder /app/dist /usr/share/nginx/html +COPY nginx.conf /etc/nginx/conf.d/default.conf EXPOSE 80 diff --git a/frontend/nginx.conf b/frontend/nginx.conf new file mode 100644 index 0000000..6aed563 --- /dev/null +++ b/frontend/nginx.conf @@ -0,0 +1,15 @@ +server { + listen 80; + server_name localhost; + + root /usr/share/nginx/html; + index index.html; + + location / { + try_files $uri /index.html; + } + + # Logs + access_log /var/log/nginx/access.log; + error_log /var/log/nginx/error.log; +}