diff --git a/Dockerfile b/Dockerfile index 392cb47..a1af301 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,19 +1,29 @@ -FROM python:3.13-slim +FROM python:3.14-alpine ENV PYTHONDONTWRITEBYTECODE=1 \ - PYTHONUNBUFFERED=1 + PYTHONUNBUFFERED=1 \ + PIP_NO_CACHE_DIR=1 WORKDIR /app -RUN apt-get update && apt-get install -y --no-install-recommends \ - build-essential curl \ - && rm -rf /var/lib/apt/lists/* +RUN apk add --no-cache \ + curl \ + freetype \ + libjpeg-turbo \ + zlib \ + && apk add --no-cache --virtual .build-deps \ + build-base \ + freetype-dev \ + libffi-dev \ + libjpeg-turbo-dev \ + zlib-dev COPY requirements.txt . -RUN pip install --no-cache-dir -r requirements.txt +RUN pip install -r requirements.txt \ + && apk del .build-deps COPY app ./app RUN mkdir -p /app/exports -EXPOSE 8000 +EXPOSE 8147 CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8147"] diff --git a/app/main.py b/app/main.py index ce5c191..42601c4 100644 --- a/app/main.py +++ b/app/main.py @@ -12,7 +12,7 @@ import httpx from io import BytesIO from bs4 import BeautifulSoup from fastapi import FastAPI, WebSocket, WebSocketDisconnect, Response -from fastapi.responses import HTMLResponse, StreamingResponse, JSONResponse +from fastapi.responses import FileResponse, HTMLResponse, StreamingResponse, JSONResponse from fastapi.staticfiles import StaticFiles from reportlab.lib import colors from reportlab.lib.pagesizes import A4, landscape @@ -68,9 +68,9 @@ async def no_cache_headers(request, call_next): return response -@app.get("/favicon.ico") -def favicon() -> Response: - return Response(status_code=204) +@app.get("/favicon.ico", include_in_schema=False) +def favicon() -> FileResponse: + return FileResponse(BASE_DIR / "static" / "favicon.ico", media_type="image/x-icon") @app.get("/", response_class=HTMLResponse) diff --git a/app/static/favicon.ico b/app/static/favicon.ico new file mode 100644 index 0000000..332bbea Binary files /dev/null and b/app/static/favicon.ico differ diff --git a/requirements.txt b/requirements.txt index f668817..dbca506 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,8 +1,8 @@ -fastapi==0.115.6 -uvicorn[standard]==0.34.0 +fastapi>=0.115.6 +uvicorn[standard]>=0.34.0 pydantic>=2.10.4 -httpx==0.28.1 -beautifulsoup4==4.12.3 -reportlab==4.2.5 -python-multipart==0.0.20 +httpx>=0.28.1 +beautifulsoup4>=4.12.3 +reportlab>=4.2.5 +python-multipart>=0.0.20 openpyxl>=3.1.5 \ No newline at end of file