Claude commited on
Commit
4223748
·
unverified ·
1 Parent(s): 657a5ae

fix(docker): create the /opt/venv that runtime expects (build regression)

Browse files

L'é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

Files changed (1) hide show
  1. Dockerfile +15 -6
Dockerfile CHANGED
@@ -59,17 +59,26 @@ COPY pyproject.toml .
59
  COPY README.md .
60
  COPY picarones/ picarones/
61
 
62
- # Créer un venv isolé et installer Picarones avec les extras web.
 
 
 
 
 
 
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
- RUN pip install --upgrade pip setuptools wheel && \
68
- pip install -e ".[web,llm]" && \
 
 
69
  pip cache purge
70
 
71
- # Patch également la copie système de pip/setuptools/wheel (en dehors du
72
- # venv) que Trivy détecte via /usr/local/lib/python3.11/site-packages.
 
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