feat(worker): Worker mit pg-boss, Vorgaenge und Docker-Betrieb (#007)
Die Oberflaeche legt einen Vorgang an und schickt nur dessen ID in die Warteschlange; der Worker fuehrt ihn aus und haelt Status, Ergebnis oder Fehler fest. So bleiben lange SSH-Vorgaenge aus dem Webprozess heraus, und der Fortschritt ist ohne Job-Interna sichtbar. Kein automatisches Wiederholen: ein halb ausgefuehrter Schreibvorgang auf einem Host gehoert vor einen Menschen. Fehlertexte aus fremden Bibliotheken erreichen die Oberflaeche nie. Dockerfile und Compose fuer den Betrieb: Master-Key als Secret nur im Worker, Datenbank in einem internen Netz. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Executable
+20
@@ -0,0 +1,20 @@
|
||||
#!/bin/sh
|
||||
# Startet Weboberflaeche oder Worker. Migrationen laufen vorher im Dienst „migrate“.
|
||||
set -e
|
||||
|
||||
rolle="${1:-web}"
|
||||
|
||||
case "$rolle" in
|
||||
web)
|
||||
echo "Starte SSHKeyVault-Weboberfläche auf Port ${PORT:-3400}."
|
||||
exec node server.js
|
||||
;;
|
||||
worker)
|
||||
echo "Starte sshkv-worker."
|
||||
exec node dist/worker.mjs
|
||||
;;
|
||||
*)
|
||||
echo "Unbekannte Rolle: $rolle (erwartet: web oder worker)" >&2
|
||||
exit 64
|
||||
;;
|
||||
esac
|
||||
@@ -0,0 +1,8 @@
|
||||
// esbuild-Banner: stellt `require` in der ESM-Ausgabe bereit, damit eingebundene
|
||||
// Pakete weiterhin CommonJS-Module wie `fs` laden können.
|
||||
import { createRequire as __createRequire } from "node:module";
|
||||
import { fileURLToPath as __fileURLToPath } from "node:url";
|
||||
import { dirname as __dirname_fn } from "node:path";
|
||||
const require = __createRequire(import.meta.url);
|
||||
const __filename = __fileURLToPath(import.meta.url);
|
||||
const __dirname = __dirname_fn(__filename);
|
||||
Reference in New Issue
Block a user