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
COPY . .
ARG REACT_APP_API_URL
ENV REACT_APP_API_URL=$REACT_APP_API_URL
RUN npm run build
# Stage 2: Serve the application with Nginx
FROM nginx:alpine
COPY --from=build /app/build /usr/share/nginx/html
COPY nginx.conf /etc/nginx/conf.d/default.conf
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:
build: ./server
ports:
- "8080:8080"
- "10090:8080"
environment:
- mongoURI=mongodb://mongo:27017/appointment_to_examiner
- CORS_ORIGIN=http://localhost:10091
depends_on:
- mongo
networks:
- app-network
client:
build: ./client
build:
context: ./client
args:
- REACT_APP_API_URL=/api
ports:
- "3000:80"
- "10091:80"
depends_on:
- server
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;
// 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(express.json());
app.use(bodyParser.urlencoded({ extended: true }));