-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathDockerfile
More file actions
36 lines (31 loc) · 1.11 KB
/
Copy pathDockerfile
File metadata and controls
36 lines (31 loc) · 1.11 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# === Base ===
FROM python:3.13-slim AS base
WORKDIR /app
# Create an unprivileged user to run the application (avoid running as root).
RUN groupadd --system --gid 10001 medcheck \
&& useradd --system --uid 10001 --gid medcheck --home-dir /app medcheck
# Install uv for fast dependency resolution
COPY --from=ghcr.io/astral-sh/uv:0.8.17 /uv /usr/local/bin/uv
# README and LICENSE are referenced by pyproject metadata (readme/license), so
# they must be present for `uv sync` to build the medcheck package itself.
COPY pyproject.toml uv.lock README.md LICENSE ./
COPY src/ src/
COPY workflows/ workflows/
# === Lite (cloud APIs only, ~500MB) ===
FROM base AS lite
RUN uv sync --no-dev --locked --no-cache \
&& chown -R medcheck:medcheck /app
EXPOSE 8080
ENV MEDCHECK_HOST=0.0.0.0
ENV MEDCHECK_PORT=8080
USER medcheck
CMD ["uv", "run", "medcheck", "serve"]
# === Full (with local ML models, ~10GB) ===
FROM base AS full
RUN uv sync --no-dev --extra local-models --locked --no-cache \
&& chown -R medcheck:medcheck /app
EXPOSE 8080
ENV MEDCHECK_HOST=0.0.0.0
ENV MEDCHECK_PORT=8080
USER medcheck
CMD ["uv", "run", "medcheck", "serve"]