forked from CSI-KJSCE/appointment_to_examiner
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:
1
client/.env.example
Normal file
1
client/.env.example
Normal file
@@ -0,0 +1 @@
|
|||||||
|
REACT_APP_API_URL=http://localhost:8080/api
|
||||||
@@ -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
18
client/nginx.conf
Normal 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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
6
server/.env.example
Normal 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
|
||||||
@@ -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 }));
|
||||||
|
|||||||
Reference in New Issue
Block a user