# Dockerfile (prod) FROM python:3.10-slim ENV PYTHONDONTWRITEBYTECODE=1 \ PYTHONUNBUFFERED=1 \ PIP_NO_CACHE_DIR=1 # System deps needed by geopandas/shapely/pyproj, mysqlclient, etc. RUN apt-get update && apt-get install -y --no-install-recommends \ build-essential \ curl \ libgeos-dev \ libspatialindex-dev \ libproj-dev proj-data proj-bin \ gdal-bin libgdal-dev \ python3-dev pkg-config \ default-libmysqlclient-dev \ && rm -rf /var/lib/apt/lists/* WORKDIR /app # Install Python deps first (layer cache friendly) COPY requirements.txt . RUN python -m pip install --upgrade pip \ && pip install --no-cache-dir -r requirements.txt # Copy project COPY . . # Expose prod port (compose overrides CMD/port, but this documents intent) EXPOSE 8002 # Default CMD (compose will override with your shell that migrates, collectstatic, and runs gunicorn:8002) CMD ["gunicorn", "polisplexity.wsgi:application", "--bind", "0.0.0.0:8002", "--workers=3", "--timeout=180"]