|
1 | 1 | # Stage 1: Build Frontend |
2 | | -FROM node:18-alpine AS frontend-builder |
| 2 | +FROM mcr.microsoft.com/mirror/docker/library/node:18-alpine AS frontend-builder |
3 | 3 | WORKDIR /frontend |
4 | 4 | COPY chat-ui/ . |
5 | 5 | RUN npm install |
6 | 6 | RUN npm run build |
7 | 7 |
|
8 | 8 | # Stage 2: Build Backend |
9 | | -FROM ghcr.io/astral-sh/uv:python3.12-bookworm-slim AS backend-builder |
10 | | -ADD . /flare-ai-social |
| 9 | +FROM mcr.microsoft.com/mirror/docker/library/python:3.11-slim AS backend-builder |
11 | 10 | WORKDIR /flare-ai-social |
12 | | -RUN uv sync --frozen |
| 11 | + |
| 12 | +# Install build dependencies and uv globally |
| 13 | +RUN apt-get update && \ |
| 14 | + apt-get install -y --no-install-recommends \ |
| 15 | + build-essential \ |
| 16 | + curl && \ |
| 17 | + rm -rf /var/lib/apt/lists/* && \ |
| 18 | + pip install uv |
| 19 | + |
| 20 | +# Create and activate virtual environment |
| 21 | +RUN python -m venv .venv && \ |
| 22 | + . .venv/bin/activate && \ |
| 23 | + python -m pip install --upgrade pip |
| 24 | + |
| 25 | +ENV PATH="/flare-ai-social/.venv/bin:$PATH" |
| 26 | +ENV VIRTUAL_ENV="/flare-ai-social/.venv" |
| 27 | +ENV PYTHONPATH="/flare-ai-social/.venv/lib/python3.11/site-packages" |
| 28 | + |
| 29 | +# Copy project files |
| 30 | +COPY pyproject.toml ./ |
| 31 | +COPY . . |
| 32 | + |
| 33 | +# Install dependencies based on the file type |
| 34 | +RUN if [ -f "requirements.txt" ]; then \ |
| 35 | + uv pip install -r requirements.txt; \ |
| 36 | + elif [ -f "pyproject.toml" ]; then \ |
| 37 | + uv sync --frozen; \ |
| 38 | + fi |
13 | 39 |
|
14 | 40 | # Stage 3: Final Image |
15 | | -FROM ghcr.io/astral-sh/uv:python3.12-bookworm-slim |
| 41 | +FROM mcr.microsoft.com/mirror/docker/library/python:3.11-slim |
16 | 42 |
|
17 | | -# Install nginx |
18 | | -RUN apt-get update && apt-get install -y nginx supervisor curl && \ |
19 | | - rm -rf /var/lib/apt/lists/* |
| 43 | +# Install runtime dependencies and uv |
| 44 | +RUN apt-get update && \ |
| 45 | + apt-get install -y --no-install-recommends \ |
| 46 | + nginx \ |
| 47 | + supervisor \ |
| 48 | + curl && \ |
| 49 | + rm -rf /var/lib/apt/lists/* && \ |
| 50 | + pip install uv |
20 | 51 |
|
21 | 52 | WORKDIR /app |
| 53 | + |
| 54 | +# Copy virtual environment and project files |
22 | 55 | COPY --from=backend-builder /flare-ai-social/.venv ./.venv |
23 | 56 | COPY --from=backend-builder /flare-ai-social/src ./src |
24 | 57 | COPY --from=backend-builder /flare-ai-social/pyproject.toml . |
25 | 58 | COPY --from=backend-builder /flare-ai-social/README.md . |
26 | 59 |
|
| 60 | +# Set up Python environment in the final stage |
| 61 | +ENV PATH="/app/.venv/bin:$PATH" |
| 62 | +ENV VIRTUAL_ENV="/app/.venv" |
| 63 | +ENV PYTHONPATH="/app/.venv/lib/python3.11/site-packages" |
| 64 | + |
27 | 65 | # Copy frontend files |
28 | 66 | COPY --from=frontend-builder /frontend/build /usr/share/nginx/html |
29 | 67 |
|
|
0 commit comments