mirror of
https://github.com/pewdiepie-archdaemon/odysseus.git
synced 2026-10-30 09:42:21 +01:00
fix(docker): require the patched Debian Brotli decoder (#6956)
* fix(docker): require the patched Debian Brotli decoder Refresh the signed Debian native Brotli package in a shared build-stage base and fail builds below the security backport floor. Verify the actual selected library, native fix marker, valid decoding, and distro Node linkage before accepting the runtime. * fix(docker): guard HTTPS trust and accept Bookworm Brotli Check the inherited system CA store before the shared base makes its first HTTPS package request. Accept the exact fixed Debian 12 marker alongside Debian 13 while retaining package floors, decoder ownership, and valid decoding controls. * fix(docker): preserve Brotli gate diagnostics
This commit is contained in:
+18
-3
@@ -1,9 +1,22 @@
|
||||
# Both stages need the fixed native decoder, including curl in the builder and
|
||||
# distro Node in the runtime. A cached Python base may predate the Debian fix.
|
||||
FROM python:3.14.9-slim AS brotli-base
|
||||
COPY scripts/check_brotli.py /usr/local/bin/check-brotli.py
|
||||
COPY scripts/check_ca_trust.py /usr/local/bin/check-ca-trust.py
|
||||
# Check inherited trust before the first HTTPS package request, retaining Debian's
|
||||
# signed archive verification. Refresh only the explicit native dependency.
|
||||
RUN python /usr/local/bin/check-ca-trust.py --system \
|
||||
&& sed -i 's|http://deb.debian.org/|https://deb.debian.org/|g' /etc/apt/sources.list.d/debian.sources \
|
||||
&& apt-get update && apt-get install -y --no-install-recommends libbrotli1 \
|
||||
&& python /usr/local/bin/check-brotli.py \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# ---- builder: patch + build wheels for Real-ESRGAN's broken-on-3.14 deps ----
|
||||
# basicsr/gfpgan/facexlib read their version via exec()+locals()['__version__'],
|
||||
# which raises KeyError on Python 3.13+ (PEP 667). Build patched wheels here so
|
||||
# the final image / Cookbook never has to compile the broken sdists. See
|
||||
# docker/build-realesrgan-wheels.sh for the full rationale.
|
||||
FROM python:3.14.9-slim AS realesrgan-wheels
|
||||
FROM brotli-base AS realesrgan-wheels
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends curl ca-certificates \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
COPY scripts/check_ca_trust.py /usr/local/bin/check-ca-trust.py
|
||||
@@ -14,7 +27,7 @@ RUN python -m pip install --no-cache-dir --require-hashes --only-binary=:all: --
|
||||
COPY docker/build-realesrgan-wheels.sh /usr/local/bin/build-realesrgan-wheels.sh
|
||||
RUN bash /usr/local/bin/build-realesrgan-wheels.sh /wheels
|
||||
|
||||
FROM python:3.14.9-slim
|
||||
FROM brotli-base
|
||||
|
||||
# System deps. tmux is required by Cookbook for background downloads/serves.
|
||||
# openssh-client is required for Cookbook remote server tests, setup, probes,
|
||||
@@ -52,6 +65,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
libglib2.0-0t64 \
|
||||
libxcb1 \
|
||||
libmagic1 \
|
||||
&& python /usr/local/bin/check-brotli.py --node /usr/bin/node \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Refresh both Python trust bundles before installing application dependencies.
|
||||
@@ -132,7 +146,8 @@ RUN pip install --no-cache-dir --no-deps /tmp/odysseus-wheels/*.whl \
|
||||
# Check gRPC's effective defaults after all Python dependencies are installed.
|
||||
# The application minimum fixes its bundled roots; the checked override also
|
||||
# keeps the effective Docker selection consistent with system trust.
|
||||
RUN python /usr/local/bin/check-ca-trust.py --system --python --grpc
|
||||
RUN python /usr/local/bin/check-ca-trust.py --system --python --grpc \
|
||||
&& python /usr/local/bin/check-brotli.py --node /usr/bin/node
|
||||
|
||||
# Copy app code
|
||||
COPY . .
|
||||
|
||||
Reference in New Issue
Block a user