major restructure
This commit is contained in:
@@ -1,71 +0,0 @@
|
||||
# =============================================================================
|
||||
# Dockerfile for Django Backend with Uvicorn
|
||||
# =============================================================================
|
||||
# Usage:
|
||||
# Development: WORKERS=1 RELOAD=--reload (source mounted, hot reload)
|
||||
# Production: WORKERS=4 RELOAD="" (no reload, multiple workers)
|
||||
|
||||
# =============================================================================
|
||||
# Stage 1: Base with system dependencies
|
||||
# =============================================================================
|
||||
FROM python:3.11-slim AS base
|
||||
|
||||
ENV PYTHONDONTWRITEBYTECODE=1
|
||||
ENV PYTHONUNBUFFERED=1
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
# Install system dependencies (cached layer)
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
build-essential \
|
||||
libpq-dev \
|
||||
gdal-bin \
|
||||
libgdal-dev \
|
||||
libgeos-dev \
|
||||
libproj-dev \
|
||||
postgresql-client \
|
||||
# WeasyPrint dependencies (for django-afip PDF generation)
|
||||
libglib2.0-0 \
|
||||
libpango-1.0-0 \
|
||||
libpangocairo-1.0-0 \
|
||||
libgdk-pixbuf-2.0-0 \
|
||||
libffi-dev \
|
||||
libcairo2 \
|
||||
libgirepository1.0-dev \
|
||||
gir1.2-pango-1.0 \
|
||||
fonts-dejavu-core \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# =============================================================================
|
||||
# Stage 2: Dependencies (cached layer)
|
||||
# =============================================================================
|
||||
FROM base AS deps
|
||||
|
||||
# Copy only requirements for dependency installation
|
||||
COPY requirements.txt .
|
||||
|
||||
# Install Python dependencies
|
||||
RUN pip install --no-cache-dir -r requirements.txt
|
||||
|
||||
# =============================================================================
|
||||
# Stage 3: Runtime (uvicorn with configurable workers)
|
||||
# =============================================================================
|
||||
FROM base AS runtime
|
||||
|
||||
# Copy dependencies from deps stage
|
||||
COPY --from=deps /usr/local/lib/python3.11/site-packages /usr/local/lib/python3.11/site-packages
|
||||
COPY --from=deps /usr/local/bin /usr/local/bin
|
||||
|
||||
# Copy requirements (for reference)
|
||||
COPY requirements.txt .
|
||||
|
||||
# Create directories
|
||||
RUN mkdir -p /var/etc/static /app/media
|
||||
|
||||
# Note: Source code mounted at runtime for dev, copied for prod
|
||||
EXPOSE 8000
|
||||
|
||||
# Uvicorn with configurable workers and reload
|
||||
# Dev: WORKERS=1 RELOAD=--reload
|
||||
# Prod: WORKERS=4 RELOAD=""
|
||||
CMD uvicorn amar_django_back.asgi:application --host 0.0.0.0 --port 8000 --workers ${WORKERS:-1} ${RELOAD}
|
||||
Reference in New Issue
Block a user