mirror of
https://github.com/R0m1k3/Reviflow.git
synced 2026-10-12 01:36:31 +02:00
40 lines
1.0 KiB
Docker
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"]
|