Files
Reviflow/Dockerfile
T

40 lines
1.0 KiB
Docker

# Stage 1: Build Frontend
FROM node:20-alpine as frontend-build
WORKDIR /app/frontend
COPY frontend/package*.json ./
ENV NODE_OPTIONS="--max-old-space-size=4096"
RUN npm install
COPY frontend/ ./
RUN mkdir -p /app/backend/static && npm run build
# Stage 2: Setup Backend & Runtime
FROM python:3.11-slim
WORKDIR /app
# Install System Dependencies (Minimal)
RUN apt-get update && apt-get install -y --no-install-recommends \
curl \
&& rm -rf /var/lib/apt/lists/*
# Install Poetry
RUN curl -sSL https://install.python-poetry.org | python3 -
ENV PATH="/root/.local/bin:$PATH"
ENV POETRY_VIRTUALENVS_CREATE=false
# Copy Backend Requirements
COPY backend/pyproject.toml backend/poetry.lock* ./backend/
WORKDIR /app/backend
RUN poetry install --no-root --without dev
# Copy Backend Code
COPY backend/ ./
# Copy Built Frontend from Stage 1 to Backend Static Folder
COPY --from=frontend-build /app/backend/static /app/backend/static
# Expose Port
EXPOSE 8000
# Run Uvicorn
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"]