Docker
ObjectOS in einem Container ausführen — zur Evaluierung, für Staging oder Produktion.
Docker ist der Weg, den die meisten Teams in die Produktion nehmen. Er entspricht der Art und Weise, wie die Laufzeitumgebung betrieben werden soll: ein zustandsloser Container pro Instanz, eine externe Datenbank, ein externer Objektspeicher für Dateien, zur Laufzeit eingespeiste Secrets.
Das vorgefertigte Image abrufen
Wir veröffentlichen das Laufzeit-Image bei jedem Push auf main sowie
bei getaggten Releases in der GitHub Container Registry:
docker pull ghcr.io/objectstack-ai/objectos:latestVerfügbare Tags:
| Tag | Channel |
|---|---|
latest | Neuester Build von main (empfohlen für die erste Evaluierung) |
main | Identisch mit latest, aber explizit |
sha-<short> | Auf einen bestimmten Commit fixiert (empfohlen für die Produktion) |
vX.Y.Z, X.Y, X | Getaggte Releases |
Für die Produktion fixieren Sie auf sha-<short> oder ein Semver-Tag —
latest verschiebt sich mit der Zeit.
Mit dem mitgelieferten Beispiel ausführen
docker run --rm -p 3000:3000 \
-e OS_AUTH_SECRET="$(openssl rand -hex 32)" \
ghcr.io/objectstack-ai/objectos:latestÖffnen Sie anschließend http://localhost:3000. Das Image enthält eine leere Beispiel-App, sodass Sie überprüfen können, ob die Laufzeitumgebung startet und Console/Account rendern, bevor Sie es auf Ihr eigenes Artefakt richten.
OS_AUTH_SECRET ist zum Starten erforderlich. Eine Rotation macht
bestehende Sitzungen ungültig.
Mit Ihrem eigenen Artefakt ausführen
Ihre App-Definition ist eine einzige Datei: dist/objectstack.json. Sie
wird erzeugt durch:
| Quelle | Vorgehen |
|---|---|
| Ihr eigenes Projekt | pnpm exec objectstack compile nach dem Bearbeiten von objectstack.config.ts |
| Eine Vorlage | Aus dem Templates-Repo klonen, dann pnpm install && pnpm exec objectstack compile ausführen |
| App-marketplace | Als Teil der veröffentlichten App bereitgestellt |
Binden Sie die Datei unter /artifacts/objectstack.json ein und richten
Sie die Laufzeitumgebung darauf aus:
docker run --rm -p 3000:3000 \
-e OS_AUTH_SECRET="$(openssl rand -hex 32)" \
-e OS_ARTIFACT_FILE=/artifacts/objectstack.json \
-v "$PWD/dist:/artifacts:ro" \
-v objectos-data:/var/lib/objectos \
ghcr.io/objectstack-ai/objectos:latestDas Volume objectos-data enthält die SQLite-Datenbank (wenn keine
externe DB konfiguriert ist) sowie alle lokal gespeicherten
hochgeladenen Dateien.
Postgres statt SQLite verwenden
docker run --rm -p 3000:3000 \
-e OS_AUTH_SECRET="$(openssl rand -hex 32)" \
-e OS_ARTIFACT_FILE=/artifacts/objectstack.json \
-e OS_DATABASE_DRIVER=postgres \
-e OS_DATABASE_URL='postgres://user:pass@db.internal:5432/myapp' \
-v "$PWD/dist:/artifacts:ro" \
ghcr.io/objectstack-ai/objectos:latestSiehe Runtime Configuration für die vollständige Matrix der Treiber und Verbindungsoptionen.
Docker Compose
Eine Referenz-docker-compose.yml liegt im Repo unter docker/:
git clone https://github.com/objectstack-ai/objectos.git
cd objectos
mkdir -p docker/artifacts
cp /path/to/your/objectstack.json docker/artifacts/
export OS_AUTH_SECRET="$(openssl rand -hex 32)"
docker compose -f docker/docker-compose.yml upDer Standardport ist 3000; überschreiben Sie ihn mit OBJECTOS_PORT=3200 docker compose ....
Ihr eigenes Image bauen
Wenn Sie ein Artefakt, benutzerdefinierte Plugins oder Ihr eigenes SSL-/CA-Bundle einbetten müssen:
git clone https://github.com/objectstack-ai/objectos.git
cd objectos
docker build -f docker/Dockerfile -t myorg/objectos:custom .Das mitgelieferte Dockerfile ist ein mehrstufiger Build, der ein schlankes Laufzeit-Image auf Node 20 Alpine erzeugt.
Was Sie getrennt halten müssen
| Asset | Wo es liegen sollte |
|---|---|
Artefakt (objectstack.json) | Image (unveränderlich) oder eingebundenes Volume |
| Business-Datenbank | Extern verwaltetes Postgres / MySQL / Mongo |
| Identität & Sitzungen | Dieselbe Datenbank |
| Hochgeladene Dateien | Extern verwaltetes S3 / R2 / Disk-Volume |
Secrets (OS_AUTH_SECRET, DB-URL, API-Keys) | Ihr Secret-Manager, als Umgebungsvariablen eingespeist |
| Logs | stdout — von Ihrem Log-Treiber erfasst |
Überprüfen
Nach dem Start:
curl -fsS http://localhost:3000/health
# {"status":"ok",...}Melden Sie sich dann unter http://localhost:3000/_account/register an und bestätigen Sie, dass die API antwortet:
curl http://localhost:3000/api/v1/data/<your-object>Weiter
- Kubernetes — Orchestrierung auf Produktionsniveau
- Air-gapped — Betrieb ohne Internet-Ausgang
- Production Readiness — Pre-Flight-Checkliste
- Observability — Logs, Metriken, Audit