Spaces:
Sleeping
fix(docker): create the /opt/venv that runtime expects (build regression)
Browse filesL'étape runtime fait ``COPY --from=builder /opt/venv /opt/venv`` mais
le builder ne créait jamais ce venv : ``pip install`` tournait contre
le Python système, et le COPY runtime échouait avec
``"/opt/venv": not found`` (régression remontée par le CI security-scan
après le commit Trivy A14).
Correctif :
1. Builder : ``python -m venv /opt/venv`` + ``ENV PATH=/opt/venv/bin:$PATH``
avant les ``pip install`` ; toutes les installs vont désormais dans
le venv plutôt que dans le Python système.
2. Le venv est patché avec setuptools>=78.1.1 / wheel>=0.46.2 / pip>=24.2
AVANT ``pip install -e .[web,llm]`` — Trivy scanne
``/opt/venv/lib/python3.11/site-packages`` après le COPY runtime,
sans le patch les CVE setuptools/wheel ressortent.
3. La copie système ``/usr/local/bin/pip`` est patchée séparément (le
site-packages système subsiste dans l'image runtime même avec le
venv).
Pas d'impact sur ``CMD`` / ``ENTRYPOINT`` : le ``ENV PATH`` du runtime
restait inchangé. Picarones est toujours résolu via le venv.
https://claude.ai/code/session_013YP6f4LxfLKTZgmY1tucX7
- Dockerfile +15 -6
|
@@ -59,17 +59,26 @@ COPY pyproject.toml .
|
|
| 59 |
COPY README.md .
|
| 60 |
COPY picarones/ picarones/
|
| 61 |
|
| 62 |
-
#
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 63 |
# Sprint A14 (correctif Trivy) : upgrade explicite de setuptools et wheel
|
| 64 |
# (CVE-2022-40897, CVE-2024-6345, CVE-2025-47273, CVE-2026-24049) avant
|
| 65 |
# l'install du package, sinon les versions héritées de la base image
|
| 66 |
-
# Python (65.5.1 / 0.45.1) restent vulnérables
|
| 67 |
-
|
| 68 |
-
|
|
|
|
|
|
|
| 69 |
pip cache purge
|
| 70 |
|
| 71 |
-
# Patch également la copie système de pip/setuptools/wheel (
|
| 72 |
-
#
|
|
|
|
| 73 |
RUN /usr/local/bin/pip install --upgrade --no-cache-dir \
|
| 74 |
"pip>=24.2" "setuptools>=78.1.1" "wheel>=0.46.2"
|
| 75 |
|
|
|
|
| 59 |
COPY README.md .
|
| 60 |
COPY picarones/ picarones/
|
| 61 |
|
| 62 |
+
# Crée le venv isolé /opt/venv et l'active pour les ``RUN`` suivants.
|
| 63 |
+
# Le runtime fera ``COPY --from=builder /opt/venv /opt/venv`` ; sans cette
|
| 64 |
+
# création explicite le COPY échoue (régression remontée par CI A14).
|
| 65 |
+
RUN python -m venv /opt/venv
|
| 66 |
+
ENV PATH="/opt/venv/bin:$PATH"
|
| 67 |
+
|
| 68 |
+
# Installe Picarones avec les extras web/llm dans le venv.
|
| 69 |
# Sprint A14 (correctif Trivy) : upgrade explicite de setuptools et wheel
|
| 70 |
# (CVE-2022-40897, CVE-2024-6345, CVE-2025-47273, CVE-2026-24049) avant
|
| 71 |
# l'install du package, sinon les versions héritées de la base image
|
| 72 |
+
# Python (65.5.1 / 0.45.1) restent vulnérables ; Trivy scanne
|
| 73 |
+
# ``/opt/venv/lib/python3.11/site-packages`` après le COPY runtime.
|
| 74 |
+
RUN pip install --upgrade --no-cache-dir \
|
| 75 |
+
"pip>=24.2" "setuptools>=78.1.1" "wheel>=0.46.2" && \
|
| 76 |
+
pip install --no-cache-dir -e ".[web,llm]" && \
|
| 77 |
pip cache purge
|
| 78 |
|
| 79 |
+
# Patch également la copie système de pip/setuptools/wheel (hors venv)
|
| 80 |
+
# que Trivy détecte via ``/usr/local/lib/python3.11/site-packages`` —
|
| 81 |
+
# subsiste dans l'image runtime même quand le venv est utilisé.
|
| 82 |
RUN /usr/local/bin/pip install --upgrade --no-cache-dir \
|
| 83 |
"pip>=24.2" "setuptools>=78.1.1" "wheel>=0.46.2"
|
| 84 |
|