|
1 | 1 | # Use slim Python 3.12 image |
2 | 2 | FROM python:3.12-slim |
3 | 3 |
|
4 | | -# Set environment variables |
| 4 | +# Don’t write .pyc files and force stdout/stderr to be unbuffered |
5 | 5 | ENV PYTHONDONTWRITEBYTECODE=1 \ |
6 | | - PYTHONUNBUFFERED=1 |
| 6 | + PYTHONUNBUFFERED=1 \ |
| 7 | + # Tell rasterio/geopandas where GDAL lives |
| 8 | + GDAL_CONFIG=/usr/bin/gdal-config \ |
| 9 | + CPLUS_INCLUDE_PATH=/usr/include/gdal \ |
| 10 | + C_INCLUDE_PATH=/usr/include/gdal |
7 | 11 |
|
8 | 12 | # Set working directory |
9 | 13 | WORKDIR /app |
10 | 14 |
|
11 | | -# Install system dependencies |
12 | | -RUN apt-get update && apt-get install -y --no-install-recommends \ |
| 15 | +# Install build tools + GDAL + GEOS + PROJ headers |
| 16 | +RUN apt-get update && \ |
| 17 | + apt-get install -y --no-install-recommends \ |
13 | 18 | build-essential \ |
14 | | - gcc \ |
15 | | - libffi-dev \ |
16 | | - libssl-dev \ |
| 19 | + python3-dev \ |
| 20 | + gdal-bin \ |
| 21 | + libgdal-dev \ |
| 22 | + libgeos-dev \ |
| 23 | + libproj-dev \ |
17 | 24 | && rm -rf /var/lib/apt/lists/* |
18 | 25 |
|
19 | 26 | # Install Python dependencies |
20 | 27 | COPY requirements.txt . |
21 | | -RUN pip install --no-cache-dir -r requirements.txt |
| 28 | +RUN pip install --upgrade pip wheel && \ |
| 29 | + pip install --no-cache-dir -r requirements.txt |
22 | 30 |
|
23 | 31 | # Copy the app code |
24 | 32 | COPY . . |
25 | 33 |
|
| 34 | +COPY ./start.sh /app/start.sh |
| 35 | + |
26 | 36 | # Expose the port FastAPI will run on |
27 | | -EXPOSE 8000 |
| 37 | +ENV PORT 8080 |
| 38 | +# EXPOSE 8000 |
28 | 39 |
|
29 | 40 | # Run the app using Uvicorn |
30 | | -CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"] |
31 | | - |
| 41 | +RUN chmod +x /app/start.sh |
| 42 | +# CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"] |
| 43 | +ENTRYPOINT ["/app/start.sh"] |
0 commit comments