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:
Terminal-Fenster docker compose -f deploy/compose/docker-compose.yml up -dWas Sie erhalten, by design:
| Eigenschaft | Wert | |---|---| | Ports |
127.0.0.1:8443(HTTPS: REST + Web-UI),127.0.0.1:8444(gRPC) — gebunden an localhost auf dem Host; exponieren Sie bewusst | | Daten | benanntes Volumeolivares-data→/var/lib/olivares(SQLite-Store, Audit-Signaturschlüssel, TLS-Material) | | Hardening | läuft als65532:65532, read-only root, alle Capabilities entfernt,no-new-privileges, tmpfs/tmp| | Healthcheck | keiner im Container (das Image ist distroless — keine Shell). Prüfen Sie/livezund/readyzvom Host aus | -
Lesen Sie das einmalige Setup-Token aus den Logs:
Terminal-Fenster docker 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) und Bundles
löscht, die älter als 14 Tage sind:
# Write your KEK passphrase once (keep it OUT of the repo / image):printf 'a strong DR passphrase' > deploy/compose/dr-pass
docker compose -f deploy/compose/docker-compose.yml \ -f deploy/compose/docker-compose.backup.yml \ --profile backup run --rm backupVerpacken 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:
cp deploy/compose/.env.example deploy/compose/.env# set POSTGRES_SUPERUSER_PASSWORD and OLIVARES_DB_PASSWORD in .env
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.