Mit Docker Compose loslegen
Das Repository liefert einen Compose-Stack unter deploy/compose/: ein gehärtetes
Single-Node-Deployment (eingebettetes SQLite, null externe Abhängigkeiten) plus zwei
Overlays — ein Postgres-Multi-Tenant-Override und ein
Disaster-Recovery-Backup-Profil. Dieses Tutorial führt Sie von up -d zu einer
konfigurierten Control Plane mit Backups.
Der Container umhüllt das gleiche einzelne Binary wie jede andere Installation;
nur das Packaging unterscheidet sich. Die untenstehenden Befehle sind die eigenen
dokumentierten Einstiegspunkte des Stacks (deploy/compose/*.yml), und der
Erststart-Ablauf, den sie steuern, ist derselbe, der im
Single-Node-Tutorial end-to-end gegen
das Binary verifiziert wird.
1. Den Single-Node-Stack hochfahren (SQLite)
Abschnitt betitelt „1. Den Single-Node-Stack hochfahren (SQLite)“-
Starten Sie ihn:
Wenn AppArmor auf dem Host die Erstellung von Benutzer-Namespaces kontrolliert, führe vor dem Start auf dem Host des Docker-Daemons die Schritte unter “Session confinement on AppArmor hosts” in
deploy/compose/README.mdaus.Terminal-Fenster docker compose -f deploy/compose/docker-compose.yml up --wait --wait-timeout 120Was Sie erhalten, by design:
Eigenschaft Wert Ports 8443(HTTPS: REST + Web-UI),8444(gRPC) — veröffentlicht auf allen Host-Schnittstellen, denn dies ist ein Server. Setzen SieOLIVARES_BIND=127.0.0.1in.env, um sie auf den Host zu beschränkenDaten benanntes Volume olivares-data→/var/lib/olivares(SQLite-Store, Audit-Signaturschlüssel, TLS-Material)Hardening läuft als 65532:65532, read-only root, alle Capabilities entfernt,no-new-privileges, tmpfs/tmpHealthcheck direkter Aufruf des eingebauten olivares readyz—ohne Shell, curl oder wget. Nur HTTP 200 vom lokalen/readyzist gesund -
Fragen Sie die Engine, wo sie ist, und lesen Sie das einmalige Setup-Token aus den Logs:
Terminal-Fenster # where the console answers, and whether setup is still pending. It runs the binary# directly and needs no shell.docker compose -f deploy/compose/docker-compose.yml exec olivares olivares first-boot# the one-time setup token, printed once at first bootdocker compose -f deploy/compose/docker-compose.yml logs olivares \| sed -n '/FIRST-BOOT SETUP/,/========================/p' -
Erstellen Sie den ersten Administrator, melden Sie sich an und erstellen Sie Ihre Organisation — genau wie im Single-Node-Tutorial (die API ist dieselbe; das TLS-Zertifikat ist beim ersten Boot selbstsigniert, also
curl -kfür das Bootstrapping):Terminal-Fenster curl -ksf -X POST https://localhost:8443/v1/setup \-H 'Content-Type: application/json' \-d '{"token":"<olst_ token>","email":"you@example.com","password":"<strong-password>"}'
2. Quellen verdrahten
Abschnitt betitelt „2. Quellen verdrahten“Quellen werden in einer einzigen Operator-Datei deklariert, die durch
OLIVARES_SOURCES_CONFIG benannt wird (Eine Quelle anbinden).
Für den Container mounten Sie die Datei und setzen die Variable mit einem kleinen
Override:
# deploy/compose/docker-compose.sources.yml (yours — not shipped)services: olivares: environment: OLIVARES_SOURCES_CONFIG: /etc/olivares/sources.json volumes: - ./sources.json:/etc/olivares/sources.json:rodocker compose -f deploy/compose/docker-compose.yml \ -f deploy/compose/docker-compose.sources.yml up -ddocker compose -f deploy/compose/docker-compose.yml logs olivares | grep "ingest: wired source"Denken Sie daran, dass die Pfade innerhalb von sources.json Container-Pfade
sind — ein pgAudit-Log-Tail zum Beispiel benötigt das Postgres-Log-Verzeichnis
ebenfalls read-only in den Container gemountet.
3. Verschlüsselte DR-Backups (das backup-Profil)
Abschnitt betitelt „3. Verschlüsselte DR-Backups (das backup-Profil)“Der Stack liefert einen One-Shot-Backup-Service, der ein verschlüsseltes,
ledger-kontinuitäts-sicheres Bundle erzeugt (olivares dr backup):
Bewahren Sie die Passphrase in einer privaten Datei außerhalb des Checkouts und
des Images auf und halten Sie eine Kopie an einem sicheren Ort außerhalb dieses
Hosts vor: Ohne sie lässt sich kein Bundle wiederherstellen. Geben Sie dem
Backup-Container schreibgeschützten Zugriff darauf (das Image läuft mit UID 65532):
sudo install -d -o 65532 -g 65532 -m 0700 /srv/olivares-drsudo install -o 65532 -g 65532 -m 0400 /path/to/private-passphrase /srv/olivares-dr/dr-pass
BACKUP_TS="$(date -u +%Y%m%dT%H%M%SZ)" \docker compose -f deploy/compose/docker-compose.yml \ -f deploy/compose/docker-compose.backup.yml \ -f - --profile backup run --rm backup <<'YAML'services: backup: volumes: - /srv/olivares-dr/dr-pass:/run/secrets/dr-pass:roYAMLVerpacken Sie diesen Befehl in einen Host-Cron für eine geplante RPO und
spiegeln Sie das Volume olivares-backups offsite — ein Backup auf demselben
Host ist keine Disaster Recovery, und die Passphrase muss getrennt von den Bundles
reisen (3-2-1). Die vollständige Prozedur, einschließlich des Restore-Drills
(olivares dr verify), steht in Backup & Restore.
4. Optional: das Postgres-Multi-Tenant-Override
Abschnitt betitelt „4. Optional: das Postgres-Multi-Tenant-Override“Für die Multi-Tenant-Topologie legen Sie das Postgres-Override darüber. Es fährt ein
Postgres 16 hoch, stellt die least-privilege-Rolle olivares_app bereit (kein
Superuser, kein BYPASSRLS — die Engine verweigert den Start gegen eine
privilegierte Rolle, weil Row-Level-Security der Mandanten-Backstop ist) und richtet
die Engine darauf aus:
Das Override stellt außerdem olivares_admin bereit, eine separate Rolle mit
NOSUPERUSER BYPASSRLS und ausschließlich Lesezugriff auf die Engine-Tabellen.
Die Engine verwendet sie über --admin-dsn für mandantenübergreifende
Lesezugriffe, auch bei der Ersteinrichtung.
Setzen Sie zuerst drei unterschiedliche Passwörter. Verwenden Sie für diese
Compose-Demo nur A-Z a-z 0-9 . _ ~ -, dann fahren Sie den Stack hoch:
cp deploy/compose/.env.example deploy/compose/.env# set three distinct passwords in deploy/compose/.env:# POSTGRES_SUPERUSER_PASSWORD, OLIVARES_DB_PASSWORD, OLIVARES_ADMIN_PASSWORD
docker compose -f deploy/compose/docker-compose.yml \ -f deploy/compose/docker-compose.postgres.yml up -dcurl -ks https://localhost:8443/readyz# {"leader":true,"setup_required":false,"status":"ok","store":"up"}curl -ks https://localhost:8443/metrics | grep olivares_store_upNächste Schritte
Abschnitt betitelt „Nächste Schritte“- Echte Signale verdrahten: die Connector-Anleitungen.
- Backups planen und drillen: Backup & Restore.
- Es überwachen: Prometheus-Metriken, SLOs und Alerts.
- Multi-Node? Kubernetes mit Helm, einschließlich HA und dem Collectors-DaemonSet.