# Use Python 3.13 slim image as base FROM python:3.13.9-slim # Set environment variables ENV PYTHONDONTWRITEBYTECODE=1 \ PYTHONUNBUFFERED=1 \ PYTHONPATH=/app \ DJANGO_SETTINGS_MODULE=dbapp.settings.production # Install system dependencies including GDAL and PostGIS dependencies RUN apt-get update && apt-get install -y \ gdal-bin \ libgdal-dev \ proj-bin \ proj-data \ libproj-dev \ libgeos-dev \ postgresql-client \ build-essential \ libpq-dev \ gcc \ g++ \ && rm -rf /var/lib/apt/lists/* # Install Python dependencies for GDAL RUN pip install --upgrade pip && \ pip install --no-cache-dir GDAL==$(gdal-config --version) # Set work directory WORKDIR /app # Copy project requirements COPY pyproject.toml uv.lock ./ # Install uv package manager RUN pip install --upgrade pip && pip install uv # Install dependencies using uv RUN uv pip install --system --no-cache-dir -r uv.lock # Copy project COPY . . # Collect static files RUN python manage.py collectstatic --noinput # Expose port EXPOSE 8000 # Run gunicorn server CMD ["gunicorn", "--bind", "0.0.0.0:8000", "--workers", "3", "dbapp.wsgi:application"]