chatsbt/Dockerfile

43 lines
925 B
Text
Raw Permalink Normal View History

2025-07-31 21:51:38 -04:00
# Multi-stage build for a Python backend with Deno frontend
2025-07-31 19:00:28 -04:00
2025-07-31 21:51:38 -04:00
# Stage 1: Build the frontend
FROM denoland/deno:2.4.3 AS frontend-builder
# Set working directory for frontend
2025-07-31 19:00:28 -04:00
WORKDIR /app/frontend
2025-07-31 21:51:38 -04:00
# Copy frontend files
COPY frontend/ .
2025-07-31 19:00:28 -04:00
2025-07-31 21:51:38 -04:00
# Install dependencies and build the frontend
2025-07-31 19:00:28 -04:00
RUN deno install --allow-scripts
RUN deno run build
2025-07-31 21:51:38 -04:00
# Stage 2: Setup Python backend with uv
FROM python:3.11-slim AS backend
2025-07-31 19:00:28 -04:00
# Install uv
2025-07-31 21:51:38 -04:00
COPY --from=ghcr.io/astral-sh/uv:latest /uv /bin/uv
2025-07-31 19:00:28 -04:00
# Set working directory
WORKDIR /app
# Copy Python project files
COPY pyproject.toml uv.lock ./
# Install Python dependencies
2025-07-31 21:51:38 -04:00
RUN uv sync --frozen
2025-07-31 19:00:28 -04:00
2025-07-31 22:50:03 -04:00
# Copy backend source code and .env file
2025-07-31 21:51:38 -04:00
COPY *.py ./
2025-07-31 22:50:03 -04:00
COPY .env ./
2025-07-31 19:00:28 -04:00
2025-07-31 21:51:38 -04:00
# Copy built frontend from previous stage
2025-07-31 19:00:28 -04:00
COPY --from=frontend-builder /app/frontend/dist ./frontend/dist
2025-07-31 21:51:38 -04:00
# Expose the port (adjust if your app uses a different port)
2025-07-31 19:00:28 -04:00
EXPOSE 8000
# Run the application
2025-07-31 22:50:03 -04:00
CMD ["uv", "run", "app.py"]