From a5948e3e7e7922ee122ff5fc83a45742b71c4d92 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Gruszczy=C5=84ski?= Date: Mon, 4 Aug 2025 22:24:18 +0200 Subject: [PATCH] move to alpine --- Dockerfile | 71 ++++++++++++++++++++++++++++++++++------------- Dockerfile_Debian | 36 ++++++++++++++++++++++++ vercel.json | 9 ------ 3 files changed, 87 insertions(+), 29 deletions(-) create mode 100644 Dockerfile_Debian delete mode 100644 vercel.json diff --git a/Dockerfile b/Dockerfile index 6fb9036..0067eee 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,35 +1,66 @@ -# Używamy lekkiego obrazu Pythona -FROM python:3.13-slim +# ========================= +# Stage 1 – Build +# ========================= +FROM python:3.13-alpine AS builder -# Ustawiamy katalog roboczy WORKDIR /app -# Zależności systemowe do OCR, obrazów, tesseract i języka PL -RUN apt-get update && apt-get install -y --no-install-recommends \ +# Instalacja bibliotek do kompilacji + zależności runtime +RUN apk add --no-cache \ tesseract-ocr \ - tesseract-ocr-pol \ - libglib2.0-0 \ - libsm6 \ - libxrender1 \ - libxext6 \ - && apt-get clean \ - && rm -rf /var/lib/apt/lists/* + tesseract-ocr-data-pol \ + poppler-utils \ + libjpeg-turbo \ + zlib \ + libpng \ + libwebp \ + libffi \ + libmagic \ + && apk add --no-cache --virtual .build-deps \ + build-base \ + jpeg-dev \ + zlib-dev \ + libpng-dev \ + libwebp-dev \ + libffi-dev -# Kopiujemy wymagania -COPY requirements.txt requirements.txt +# Kopiujemy plik wymagań +COPY requirements.txt . -# Instalujemy zależności -RUN pip install --no-cache-dir -r requirements.txt +# Instalujemy zależności Pythona do folderu tymczasowego +RUN pip install --no-cache-dir --prefix=/install -r requirements.txt -# Kopiujemy resztę aplikacji + +# ========================= +# Stage 2 – Final image +# ========================= +FROM python:3.13-alpine + +WORKDIR /app + +# Instalacja tylko bibliotek runtime (bez dev) +RUN apk add --no-cache \ + tesseract-ocr \ + tesseract-ocr-data-pol \ + poppler-utils \ + libjpeg-turbo \ + zlib \ + libpng \ + libwebp \ + libffi \ + libmagic + +# Kopiujemy zbudowane biblioteki z buildera +COPY --from=builder /install /usr/local + +# Kopiujemy kod aplikacji COPY . . -# Kopiujemy entrypoint i ustawiamy uprawnienia +# Ustawiamy entrypoint COPY entrypoint.sh /entrypoint.sh RUN chmod +x /entrypoint.sh -# Otwieramy port +# Otwieramy port aplikacji EXPOSE 8000 -# Ustawiamy entrypoint ENTRYPOINT ["/entrypoint.sh"] diff --git a/Dockerfile_Debian b/Dockerfile_Debian new file mode 100644 index 0000000..09c852d --- /dev/null +++ b/Dockerfile_Debian @@ -0,0 +1,36 @@ +# Używamy lekkiego obrazu Pythona +FROM python:3.13-slim + +# Ustawiamy katalog roboczy +WORKDIR /app + +# Zależności systemowe do OCR, obrazów, tesseract i języka PL +RUN apt-get update && apt-get install -y --no-install-recommends \ + tesseract-ocr \ + tesseract-ocr-pol \ + libglib2.0-0 \ + libsm6 \ + libxrender1 \ + libxext6 \ + poppler-utils \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* + +# Kopiujemy wymagania +COPY requirements.txt requirements.txt + +# Instalujemy zależności +RUN pip install --no-cache-dir -r requirements.txt + +# Kopiujemy resztę aplikacji +COPY . . + +# Kopiujemy entrypoint i ustawiamy uprawnienia +COPY entrypoint.sh /entrypoint.sh +RUN chmod +x /entrypoint.sh + +# Otwieramy port +EXPOSE 8000 + +# Ustawiamy entrypoint +ENTRYPOINT ["/entrypoint.sh"] diff --git a/vercel.json b/vercel.json deleted file mode 100644 index 714d4d8..0000000 --- a/vercel.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "version": 2, - "builds": [ - { "src": "app.py", "use": "@vercel/python" } - ], - "routes": [ - { "src": "/(.*)", "dest": "api/app.py" } - ] -}