Démarrer avec Docker Compose
Le dépôt livre une stack Compose sous deploy/compose/ : un déploiement nœud unique durci
(SQLite embarqué, zéro dépendance externe) plus deux overlays — un override Postgres
multi-tenant et un profil de sauvegarde de reprise après sinistre. Ce tutoriel vous
mène de up -d à un control plane configuré avec des sauvegardes.
Le conteneur enveloppe le même binaire unique que toute autre installation ; seul
l’emballage diffère. Les commandes ci-dessous sont les points d’entrée documentés de la
stack elle-même (deploy/compose/*.yml), et le flux de premier démarrage qu’elles pilotent
est le même que celui vérifié de bout en bout contre le binaire dans le
tutoriel nœud unique.
1. Démarrer la stack nœud unique (SQLite)
Section intitulée « 1. Démarrer la stack nœud unique (SQLite) »-
Démarrez-la :
Fenêtre de terminal docker compose -f deploy/compose/docker-compose.yml up -dCe que vous obtenez, par conception :
| Propriété | Valeur | |---|---| | Ports |
127.0.0.1:8443(HTTPS : REST + interface web),127.0.0.1:8444(gRPC) — liés à localhost sur l’hôte ; exposez délibérément | | Données | volume nomméolivares-data→/var/lib/olivares(store SQLite, clé de signature d’audit, matériel TLS) | | Durcissement | tourne en65532:65532, racine en lecture seule, toutes les capabilities supprimées,no-new-privileges, tmpfs/tmp| | Healthcheck | aucun en-conteneur (l’image est distroless — pas de shell). Sondez/livezet/readyzdepuis l’hôte | -
Lisez le jeton de configuration à usage unique depuis les journaux :
Fenêtre de terminal docker compose -f deploy/compose/docker-compose.yml logs olivares \| sed -n '/FIRST-BOOT SETUP/,/========================/p' -
Créez le premier administrateur, connectez-vous, et créez votre organisation — exactement comme dans le tutoriel nœud unique (l’API est la même ; le certificat TLS est auto-signé au premier démarrage, donc
curl -kpour le bootstrap) :Fenêtre de terminal 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. Câbler les sources
Section intitulée « 2. Câbler les sources »Les sources sont déclarées dans un seul fichier opérateur nommé par
OLIVARES_SOURCES_CONFIG (connecter une source). Pour le
conteneur, montez le fichier et définissez la variable avec un petit 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"Rappelez-vous que les chemins à l’intérieur de sources.json sont des chemins
conteneur — une traînée de journal pgAudit, par exemple, nécessite que le répertoire de
journaux Postgres soit monté en lecture seule dans le conteneur également.
3. Sauvegardes DR chiffrées (le profil backup)
Section intitulée « 3. Sauvegardes DR chiffrées (le profil backup) »La stack livre un service de sauvegarde one-shot qui produit un bundle chiffré et sûr pour
la continuité du ledger (olivares dr backup) et élague les bundles de plus de 14 jours :
# 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 backupEnveloppez cette commande dans un cron de l’hôte pour un RPO planifié, et mettez en miroir
le volume olivares-backups hors site — une sauvegarde sur le même hôte n’est pas une
reprise après sinistre, et la passphrase doit voyager séparément des bundles (3-2-1). La
procédure complète, y compris l’exercice de restauration (olivares dr verify), est dans
sauvegarde & restauration.
4. Optionnel : l’override Postgres multi-tenant
Section intitulée « 4. Optionnel : l’override Postgres multi-tenant »Pour la topologie multi-tenant, superposez l’override Postgres. Il démarre un Postgres 16,
provisionne le rôle olivares_app à moindre privilège (pas de superuser, pas de
BYPASSRLS — le moteur refuse de démarrer contre un rôle privilégié, car la sécurité au
niveau ligne est le filet de sécurité du tenant), et y pointe le moteur :
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_upÉtapes suivantes
Section intitulée « Étapes suivantes »- Câbler de vrais signaux : les guides de connecteurs.
- Planifier et exercer les sauvegardes : sauvegarde & restauration.
- Le superviser : métriques Prometheus, SLO et alertes.
- Passer en multi-nœuds ? Kubernetes avec Helm, y compris la HA et le DaemonSet des collecteurs.