FROM debian:bookworm-slim # hfsprogs (mkfs.hfsplus) liegt in Debians "non-free"-Bereich, das offizielle # bookworm-slim-Image aktiviert davon aber nur "main". WICHTIG: bookworm-slim # nutzt seit einiger Zeit das neue deb822-Format (/etc/apt/sources.list.d/ # debian.sources) und deklariert dort bereits "Signed-By" fuer deb.debian.org. # Eine ZUSAETZLICHE separate sources.list-Datei fuer dieselbe URI ohne # Signed-By fuehrt zu "Conflicting values set for option Signed-By" und # bricht apt-get update komplett ab (live getestet). Deshalb hier die # bestehende deb822-Datei in-place um contrib/non-free erweitern statt eine # zweite Quelle anzulegen. RUN sed -i 's/^Components: main$/Components: main contrib non-free non-free-firmware/' \ /etc/apt/sources.list.d/debian.sources RUN apt-get update && apt-get install -y --no-install-recommends \ python3 python3-pip \ util-linux \ gdisk \ parted \ hfsprogs \ dmg2img \ cpio \ xz-utils liblzma-dev \ libxml2-dev libssl-dev zlib1g-dev \ autoconf automake libtool pkg-config \ git build-essential \ ca-certificates curl \ && rm -rf /var/lib/apt/lists/* # xar: existiert als Debian-Paket erst ab trixie (bookworm hat es gar nicht # im Archiv, auch nicht in non-free). Statt die ganze Basis-Distro zu wechseln # (Risiko fuer alle anderen Pakete) bauen wir es aus dem mackyle/xar-Upstream. # MUSS vor pbzx gebaut werden -- pbzx linkt gegen -lxar und xar/xar.h. # Live getestet: configure.ac prüft die Existenz von OpenSSL via # AC_CHECK_LIB([crypto], [OpenSSL_add_all_ciphers]) -- diese Funktion ist in # OpenSSL 3.x (Debian bookworm) nur noch ein no-op-Praeprozessor-Makro in # evp.h, kein linkbares Symbol mehr, der Autoconf-Test schlaegt daher fehl # ("Cannot build without libcrypto"), obwohl libssl-dev korrekt installiert # ist. Fix: den Probe-Funktionsnamen per sed auf EVP_EncryptInit umbiegen -- # eine seit jeher stabil exportierte Funktion, verifiziert per nm gegen # libcrypto.so.3 in genau diesem Image. RUN git clone --depth 1 https://github.com/mackyle/xar.git /tmp/xar-src \ && cd /tmp/xar-src/xar \ && sed -i 's/OpenSSL_add_all_ciphers/EVP_EncryptInit/g' configure.ac \ && ./autogen.sh && ./configure && make && make install \ && ldconfig \ && rm -rf /tmp/xar-src # pbzx: entpackt Apples pbzx-komprimierte Installer-Payloads (macOS Big Sur+). # WICHTIG: mackyle/pbzx existiert nicht (mehr) auf GitHub (404, live geprueft # -- git meldet dafuer irrefuehrend "could not read Username", weil GitHub # bei git-upload-pack aus Anti-Enumeration-Gruenden 401 statt 404 zurueckgibt). # Community-Standard ist der Fork NiklasRosenstein/pbzx (u.a. in OSX-KVM # genutzt), live gegen GitHub verifiziert und hier gegen das zuvor gebaute # xar gelinkt. RUN git clone --depth 1 https://github.com/NiklasRosenstein/pbzx.git /tmp/pbzx \ && cd /tmp/pbzx && make && install -m 755 pbzx /usr/local/bin/pbzx \ && rm -rf /tmp/pbzx WORKDIR /app COPY backend/requirements.txt /app/backend/requirements.txt RUN pip3 install --no-cache-dir --break-system-packages -r /app/backend/requirements.txt COPY backend /app/backend COPY frontend /app/frontend EXPOSE 8080 ENV PYTHONUNBUFFERED=1 CMD ["python3", "/app/backend/app.py"]