ObjectOS
Bereitstellen

Docker

ObjectOS in einem Container ausführen — zur Evaluierung, für Staging oder Produktion.

Docker

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