This repository was archived by the owner on Sep 12, 2026. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDockerfile
More file actions
73 lines (62 loc) · 2.65 KB
/
Copy pathDockerfile
File metadata and controls
73 lines (62 loc) · 2.65 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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# SynthaEmbed backend — core-api + worker (ADR-002, Railway)
FROM ghcr.io/astral-sh/uv:python3.11-bookworm-slim AS builder
WORKDIR /app
ENV UV_COMPILE_BYTECODE=1 \
UV_LINK_MODE=copy
# every [tool.uv.workspace] member must be present or `uv sync` fails
COPY pyproject.toml uv.lock ./
COPY packages/agentkit packages/agentkit
COPY packages/asn-engine packages/asn-engine
COPY packages/datalab packages/datalab
COPY packages/eval-harness packages/eval-harness
COPY packages/omni-sim packages/omni-sim
COPY packages/runboard packages/runboard
COPY services/core-api services/core-api
COPY services/trainer services/trainer
COPY services/worker services/worker
# db extra is required: app.auth imports sqlalchemy at module level
RUN uv sync --all-packages --extra model --extra db \
&& uv pip install --python .venv/bin/python torch \
--index-url https://download.pytorch.org/whl/cpu --force-reinstall
# --- runtime ---
FROM ghcr.io/astral-sh/uv:python3.11-bookworm-slim AS runtime
WORKDIR /app
ENV PYTHONUNBUFFERED=1 \
PYTHONPATH=/app/services/core-api \
PATH="/app/.venv/bin:$PATH" \
SYNTH_ARTIFACTS_DIR=/data/artifacts \
SYNTH_CORPORA_DIR=/app/corpora \
RUNBOARD_DIR=/data/runs \
DATALAB_DIR=/data/datalab \
HF_HOME=/app/hf-cache \
DATALAB_SEED_DIR=/app/seed/datalab \
OKF_DATASETS_DIR=/app/knowledge/datasets
RUN apt-get update \
&& apt-get install -y --no-install-recommends libgomp1 \
&& rm -rf /var/lib/apt/lists/* \
&& mkdir -p /data/artifacts /data/corpora /data/runs /data/datalab
COPY --from=builder /app/.venv /app/.venv
COPY packages/agentkit packages/agentkit
COPY packages/asn-engine packages/asn-engine
COPY packages/datalab packages/datalab
COPY packages/eval-harness packages/eval-harness
COPY packages/omni-sim packages/omni-sim
COPY packages/runboard packages/runboard
COPY services/core-api services/core-api
COPY services/trainer services/trainer
COPY services/worker services/worker
COPY content/corpora /app/corpora
# Charters + BD queue: the deploy authorization layer must exist in-image
COPY config/recipes /app/config/recipes
COPY config/datalab_sources.json /app/config/datalab_sources.json
COPY content/fleet /app/content/fleet
# Refinery catalog seeds (Spec 0018): local datalab manifests + OKF cards
COPY content/datalab-seed /app/seed/datalab
COPY knowledge/datasets /app/knowledge/datasets
COPY infra/docker-entrypoint.sh infra/docker-entrypoint.sh
# smoke: import the app AND the lazily-imported telemetry service
RUN chmod +x infra/docker-entrypoint.sh \
&& python -c "import app.main, app.services.telemetry; print('app import ok')"
EXPOSE 8000
ENTRYPOINT ["/app/infra/docker-entrypoint.sh"]
CMD ["api"]