From bec644a4b38ecf46b455fa6c144763c46d1a7fb2 Mon Sep 17 00:00:00 2001 From: Floke Date: Wed, 16 Jul 2025 12:14:39 +0000 Subject: [PATCH] Dockerfile aktualisiert --- Dockerfile | 80 ++++++++++++++++++++++++++++++------------------------ 1 file changed, 45 insertions(+), 35 deletions(-) diff --git a/Dockerfile b/Dockerfile index bcdbda14..b0128722 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,54 +1,64 @@ -# Basis-Image +# 1. Basis-Image: Ein schlankes Debian-basiertes Python 3.8 FROM python:3.8-slim -# Arbeitsverzeichnis setzen -WORKDIR /app - -# Systemabhängigkeiten für Google Chrome installieren +# 2. System-Abhängigkeiten installieren +# Installiert alle notwendigen Bibliotheken für Chrome und nützliche Tools wie wget. +# Die Option --no-install-recommends hält das Image klein. +# rm -rf /var/lib/apt/lists/* räumt den apt-Cache auf, um Speicherplatz zu sparen. RUN apt-get update && apt-get install -y \ wget \ unzip \ gnupg \ ca-certificates \ - # Chrome-Bibliotheken - libnss3 \ - libxss1 \ - libatk1.0-0 \ + fonts-liberation \ + libasound2 \ libatk-bridge2.0-0 \ + libatk1.0-0 \ libcups2 \ - libdrm2 \ libdbus-1-3 \ - libgbm1 \ libgdk-pixbuf2.0-0 \ - libgtk-3-0 \ - libatspi2.0-0 \ + libnspr4 \ + libnss3 \ + libx11-xcb1 \ + libxcomposite1 \ + libxdamage1 \ + libxrandr2 \ + xdg-utils \ --no-install-recommends && \ rm -rf /var/lib/apt/lists/* -# Google Chrome Stable installieren -RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - \ - && echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list \ - && apt-get update \ - && apt-get install -y google-chrome-stable \ - --no-install-recommends \ - && rm -rf /var/lib/apt/lists/* +# 3. Google Chrome Stable installieren +# Fügt das offizielle Google-Repository hinzu und installiert die stabile Chrome-Version. +RUN wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | apt-key add - && \ + echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" > /etc/apt/sources.list.d/google-chrome.list && \ + apt-get update && \ + apt-get install -y google-chrome-stable --no-install-recommends && \ + rm -rf /var/lib/apt/lists/* -# Passenden Chromedriver installieren -# Diese Methode ist robust und findet die passende Version dynamisch -RUN CHROME_VERSION=$(google-chrome --version | cut -f 3 -d ' ' | cut -d '.' -f 1-3) \ - && DRIVER_VERSION=$(wget -qO- "https://googlechromelabs.github.io/chrome-for-testing/latest-patch-versions-per-build.json" | grep -A1 "\"${CHROME_VERSION}\"" | grep "version" | cut -d '"' -f 4) \ - && wget -q "https://storage.googleapis.com/chrome-for-testing-public/${DRIVER_VERSION}/linux64/chromedriver-linux64.zip" -O /tmp/chromedriver.zip \ - && unzip /tmp/chromedriver.zip -d /usr/local/bin/ \ - && mv /usr/local/bin/chromedriver-linux64/chromedriver /usr/local/bin/ \ - && rm -rf /tmp/chromedriver.zip /usr/local/bin/chromedriver-linux64 \ - && chmod +x /usr/local/bin/chromedriver +# 4. Passenden Chromedriver installieren +# Dieser Block ermittelt dynamisch die Version des gerade installierten Chrome +# und lädt exakt die dazu passende Chromedriver-Version herunter. +RUN CHROME_VERSION=$(google-chrome --version | awk '{print $3}') && \ + CHROMEDRIVER_VERSION=$(wget -qO- https://chromedriver.storage.googleapis.com/LATEST_RELEASE_${CHROME_VERSION%.*}) && \ + wget -O /tmp/chromedriver.zip https://chromedriver.storage.googleapis.com/${CHROMEDRIVER_VERSION}/chromedriver_linux64.zip && \ + unzip /tmp/chromedriver.zip -d /usr/local/bin/ && \ + chmod +x /usr/local/bin/chromedriver && \ + rm /tmp/chromedriver.zip -# Python-Abhängigkeiten installieren -COPY app/requirements.txt . -RUN pip install --no-cache-dir -r requirements.txt +# 5. App-Verzeichnis einrichten +# Setzt das Standard-Arbeitsverzeichnis im Container auf /app. +WORKDIR /app -# Den App-Code in den Container kopieren -COPY app/ . +# 6. Anwendungsdateien kopieren +# Kopiert ALLE Dateien aus dem aktuellen Verzeichnis (wo das Dockerfile liegt) +# in das /app Verzeichnis im Container. Dies ist die entscheidende Zeile für deine flache Dateistruktur. +COPY . . -# Standard-Befehl zum Ausführen des Skripts +# 7. Python-Abhängigkeiten installieren +# Liest die requirements.txt und installiert die Pakete mit pip. +RUN pip3 install --no-cache-dir -r requirements.txt + +# 8. Standard-Startbefehl festlegen +# Dieser Befehl wird ausgeführt, wenn der Container gestartet wird. +# Er startet dein Haupt-Skript mit Python 3. CMD ["python3", "scrape_fotograf.py"] \ No newline at end of file