File size: 1,013 Bytes
eadb9a4
 
85b09a4
eadb9a4
 
85b09a4
eadb9a4
 
 
85b09a4
eadb9a4
 
85b09a4
eadb9a4
 
85b09a4
eadb9a4
 
85b09a4
eadb9a4
 
ae4e258
eadb9a4
 
ae4e258
eadb9a4
571acfd
eadb9a4
ae4e258
eadb9a4
 
ae4e258
eadb9a4
 
ae4e258
eadb9a4
 
9383bfc
eadb9a4
 
9383bfc
eadb9a4
 
ae4e258
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# Stage 1: Build frontend
FROM node:latest AS frontend

# Set working directory for frontend
WORKDIR /app/frontend

# Copy frontend source code
COPY frontend/package.json frontend/package-lock.json ./
COPY frontend .

# Install dependencies
RUN npm install

# Build frontend
RUN npm run build

# Stage 2: Build backend
FROM python:3.9-slim AS backend

# Set working directory for backend
WORKDIR /app/backend

# Copy backend source code
COPY backend .

# Install backend dependencies
COPY backend/requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

# Stage 3: Serve frontend and backend using nginx and gunicorn
FROM nginx:latest AS production

# Copy built frontend files from the frontend stage to nginx
COPY --from=frontend /app/frontend/dist /usr/share/nginx/html

# Copy built backend code from the backend stage
COPY --from=backend /app/backend /app/backend

# Expose port 80 for nginx
EXPOSE 80

# Start gunicorn server for backend
CMD ["gunicorn", "--bind", "0.0.0.0:8000", "app:app"]