fix: upgrade Docker base to python:3.14.3-slim (73 → ~27 Snyk findings)#9
fix: upgrade Docker base to python:3.14.3-slim (73 → ~27 Snyk findings)#9ryanmcmillan merged 1 commit intomainfrom
Conversation
Drops Snyk container findings from 73 to ~27 (0 critical, 0 high, 1 medium, 26 low). All deps tested on Python 3.14 earlier this session. CI matrix covers 3.10-3.12 for backwards compat.
Greptile SummaryThis PR upgrades the Docker base image from Key observations:
Confidence Score: 4/5
Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[git push / PR] --> B[CI: backend job]
A --> C[CI: docker job]
B --> B1["matrix: 3.10 / 3.11 / 3.12\n(lint + type-check)"]
B1 --> B2["❌ Python 3.14 NOT tested\nin unit/lint pipeline"]
C --> C1["docker build\npython:3.14.3-slim"]
C1 --> C2["docker run + health-check\n/health endpoint"]
C2 --> C3["✅ Container starts on 3.14"]
B2 -.->|gap| C3
|
| @@ -1,4 +1,4 @@ | |||
| FROM python:3.13.3-slim | |||
| FROM python:3.14.3-slim | |||
There was a problem hiding this comment.
Consider pinning base image by digest for supply-chain reproducibility
Pinning to a mutable tag (3.14.3-slim) means that if Docker Hub silently replaces the image (e.g., for an OS-level patch), subsequent builds pull a different layer without any visible change to this file. For a security-focused PR this is worth noting. Using the image digest (e.g., python:3.14.3-slim@sha256:<digest>) gives a stronger guarantee that every build uses the exact same bits.
| FROM python:3.14.3-slim | |
| FROM python:3.14.3-slim@sha256:<digest-from-docker-hub> |
You can obtain the digest via:
docker pull python:3.14.3-slim
docker inspect --format='{{index .RepoDigests 0}}' python:3.14.3-slim
Summary
Upgrades Docker base from
python:3.13.3-slimtopython:3.14.3-slimper Snyk's own recommendation.Impact
Testing
apt-get upgradelayer retained for additional OS patching