ObjectOS
Bereitstellen

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:latest

Verfügbare Tags:

TagChannel
latestNeuester Build von main (empfohlen für die erste Evaluierung)
mainIdentisch mit latest, aber explizit
sha-<short>Auf einen bestimmten Commit fixiert (empfohlen für die Produktion)
vX.Y.Z, X.Y, XGetaggte 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:

QuelleVorgehen
Ihr eigenes Projektpnpm exec objectstack compile nach dem Bearbeiten von objectstack.config.ts
Eine VorlageAus dem Templates-Repo klonen, dann pnpm install && pnpm exec objectstack compile ausführen
App-marketplaceAls 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:latest

Das 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:latest

Siehe 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 up

Der 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

AssetWo es liegen sollte
Artefakt (objectstack.json)Image (unveränderlich) oder eingebundenes Volume
Business-DatenbankExtern verwaltetes Postgres / MySQL / Mongo
Identität & SitzungenDieselbe Datenbank
Hochgeladene DateienExtern verwaltetes S3 / R2 / Disk-Volume
Secrets (OS_AUTH_SECRET, DB-URL, API-Keys)Ihr Secret-Manager, als Umgebungsvariablen eingespeist
Logsstdout — 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

On this page