feat: Set up initial Docker Compose environment for client and server with Nginx, Express, MongoDB, and JWT/Google OAuth authentication.

This commit is contained in:
2025-12-08 16:14:52 +05:30
parent a45eb2569c
commit 093af3a36f
6 changed files with 36 additions and 4 deletions

1
client/.env.example Normal file
View File

@@ -0,0 +1 @@
REACT_APP_API_URL=http://localhost:8080/api

View File

@@ -7,12 +7,15 @@ COPY package*.json ./
RUN npm install RUN npm install
COPY . . COPY . .
ARG REACT_APP_API_URL
ENV REACT_APP_API_URL=$REACT_APP_API_URL
RUN npm run build RUN npm run build
# Stage 2: Serve the application with Nginx # Stage 2: Serve the application with Nginx
FROM nginx:alpine FROM nginx:alpine
COPY --from=build /app/build /usr/share/nginx/html COPY --from=build /app/build /usr/share/nginx/html
COPY nginx.conf /etc/nginx/conf.d/default.conf
EXPOSE 80 EXPOSE 80

18
client/nginx.conf Normal file
View File

@@ -0,0 +1,18 @@
server {
listen 80;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
location /api {
proxy_pass http://server:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}

View File

@@ -4,18 +4,22 @@ services:
server: server:
build: ./server build: ./server
ports: ports:
- "8080:8080" - "10090:8080"
environment: environment:
- mongoURI=mongodb://mongo:27017/appointment_to_examiner - mongoURI=mongodb://mongo:27017/appointment_to_examiner
- CORS_ORIGIN=http://localhost:10091
depends_on: depends_on:
- mongo - mongo
networks: networks:
- app-network - app-network
client: client:
build: ./client build:
context: ./client
args:
- REACT_APP_API_URL=/api
ports: ports:
- "3000:80" - "10091:80"
depends_on: depends_on:
- server - server
networks: networks:

6
server/.env.example Normal file
View File

@@ -0,0 +1,6 @@
mongoURI=mongodb://localhost:27017/appointment_to_examiner
JWT_SECRET=your_jwt_secret
GOOGLE_CLIENT_ID=your_google_client_id
GOOGLE_CLIENT_SECRET=your_google_client_secret
GOOGLE_REFRESH_TOKEN=your_google_refresh_token
EMAIL_USERNAME=your_email@gmail.com

View File

@@ -35,7 +35,7 @@ const app = express();
const PORT = 8080; const PORT = 8080;
// Middleware // Middleware
app.use(cors({ origin: "http://localhost:3000", credentials: true })); app.use(cors({ origin: process.env.CORS_ORIGIN || "http://localhost:3000", credentials: true }));
app.use(cookieparser()); app.use(cookieparser());
app.use(express.json()); app.use(express.json());
app.use(bodyParser.urlencoded({ extended: true })); app.use(bodyParser.urlencoded({ extended: true }));