Alle Laufzeitdateien (config, ACLs, keys, state, aa-cache, log) gehen über den Mount ./data:/data, weil logDir und ACLs relativ zum CONFIG_PATH aufgelöst werden. Ohne Keys startet der Router trotzdem, /health bleibt bedienbar.
21 lines
789 B
Docker
21 lines
789 B
Docker
# llmrouter — ein Image, keine Abhängigkeiten (package.json hat keine deps).
|
|
# oven/bun:1 ist Debian-basiert und bringt bun mit; der Router läuft darin
|
|
# direkt aus den Quellen (kein Build-Schritt nötig).
|
|
FROM oven/bun:1
|
|
|
|
WORKDIR /app
|
|
|
|
# Mitgelieferte Demo-Konfiguration: greift nur, wenn LLMROUTER_CONFIG nicht
|
|
# gesetzt ist (Compose überschreibt sie mit /data/config.json).
|
|
COPY package.json ./
|
|
COPY src ./src
|
|
COPY config.json key-acls.json ./
|
|
|
|
EXPOSE 4010
|
|
|
|
# /health braucht keine Keys; der Router lauscht auch ohne Secret-Umfeld.
|
|
HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 \
|
|
CMD bun -e 'const p = Number(process.env.PORT ?? 4010); const r = await fetch("http://127.0.0.1:" + p + "/health"); process.exit(r.ok ? 0 : 1)'
|
|
|
|
CMD ["bun", "src/server.ts"]
|