Skip to content

Commit 4249e44

Browse files
committed
feat: add dockerfile for better windows support
1 parent b24231e commit 4249e44

File tree

1 file changed

+46
-8
lines changed

1 file changed

+46
-8
lines changed

Dockerfile

Lines changed: 46 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,67 @@
11
# 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
33
WORKDIR /frontend
44
COPY chat-ui/ .
55
RUN npm install
66
RUN npm run build
77

88
# 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
1110
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
1339

1440
# 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
1642

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
2051

2152
WORKDIR /app
53+
54+
# Copy virtual environment and project files
2255
COPY --from=backend-builder /flare-ai-social/.venv ./.venv
2356
COPY --from=backend-builder /flare-ai-social/src ./src
2457
COPY --from=backend-builder /flare-ai-social/pyproject.toml .
2558
COPY --from=backend-builder /flare-ai-social/README.md .
2659

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+
2765
# Copy frontend files
2866
COPY --from=frontend-builder /frontend/build /usr/share/nginx/html
2967

0 commit comments

Comments
 (0)