leistungsbilanz-ts/docs
Julian Appel 2e3e85a8e5 Harden the container runtime and shut down cleanly
Running the stack on built output stopped the idle CPU load, but the
remaining findings from the deployment report were still open.

The Dockerfile is now multi-stage. The prod target runs on node:24-slim as
the "node" user instead of root and carries only its runtime dependencies;
"npm prune --omit=dev" drops tsx, drizzle-kit and typescript. The migration
scripts need drizzle-orm and better-sqlite3, both regular dependencies, so
they keep working. The dev target keeps devDependencies for compose.dev.yaml.

Both compose files get a mem_limit. The server stack also sets memswap_limit
to the same value, so a leak lets the OOM killer replace the container
instead of pushing the host into swap. The Express API is no longer
published on the host: it has no authentication and is reached through the
Next.js rewrite. Development ports are bound to the loopback interface.
Services drop all capabilities and run with no-new-privileges.

SIGTERM and SIGINT now close the HTTP server and the SQLite handle and exit,
instead of only logging the signal and waiting for the container's SIGKILL
ten seconds later. server.closeIdleConnections() releases the keep-alive
sockets the Next.js server holds, which would otherwise keep server.close()
pending for the whole grace period. The compose start commands exec into
node, because otherwise sh stays the foreground process and the signal never
reaches it.

Delete scripts/docker-start.sh rather than fixing its unsupervised
background API: both compose stacks set their own command, so the
single-container entrypoint has no caller left. Also remove drizzle.config.js
(a stray tsc artifact drizzle-kit never reads) and the pre-Next index.html
and styles.css.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-16 11:04:34 +02:00
..
archive Rewrite project documentation 2026-07-23 21:05:43 +02:00
spec Add Revit circuit list object feed 2026-08-02 18:59:01 +02:00
circuit-list-editor-api.md Update docs for the code-review fixes 2026-08-06 21:33:28 +02:00
circuit-list-editor-architecture.md Remove circuit structure preview 2026-07-31 14:52:37 +02:00
circuit-list-editor-interactions.md Restore circuit drag placement 2026-07-31 08:33:41 +02:00
circuit-list-editor-known-limitations.md Add external object new circuit command 2026-08-02 18:55:57 +02:00
current-architecture.md Update docs for the code-review fixes 2026-08-06 21:33:28 +02:00
deployment.md Harden the container runtime and shut down cleanly 2026-09-16 11:04:34 +02:00
development-workflow.md Create clean release database baseline 2026-07-31 14:07:26 +02:00
project-history-and-external-model-architecture.md Add public building project setting 2026-07-31 17:41:30 +02:00
README.md Plan Revit CSV integration 2026-08-02 15:47:12 +02:00
revit-requirements-llm-context.md Add public building project setting 2026-07-31 17:41:30 +02:00

Dokumentationsübersicht

Diese Seite ist der Einstieg in die Projektdokumentation. Aussagen zum aktuellen System stehen unter „Aktuell“. Zukunftsentwürfe und historische Unterlagen sind ausdrücklich getrennt und dürfen nicht als bereits implementiert verstanden werden.

Aktuell

Entwicklung und Betrieb

Zukunftsarchitektur

Fachliche Referenzspezifikation

Die folgenden Dokumente beschreiben Zielregeln und Anforderungen. Nicht jeder Punkt ist bereits umgesetzt; der aktuelle Stand ergibt sich aus Architektur, Limitierungen und Roadmap.

Archiv