Docker Compose で始める
リポジトリは deploy/compose/ 配下に Compose スタックを同梱しています:堅牢化された
シングルノードデプロイ(組み込み SQLite、外部依存ゼロ)に加え、2つのオーバーレイ —
Postgres マルチテナントのオーバーライドと、ディザスタリカバリ バックアップの
プロファイルです。このチュートリアルは、up -d からバックアップを備えた設定済みの
control plane までを案内します。
コンテナは、他のすべてのインストールと同じ単一バイナリをラップします。異なるのは
パッケージングだけです。以下のコマンドはスタック自身のドキュメント化されたエントリ
ポイント(deploy/compose/*.yml)であり、それらが駆動する初回起動フローは、
シングルノードチュートリアルでバイナリに
対してエンドツーエンドで検証されたものと同じです。
1. シングルノードスタックを立ち上げる(SQLite)
Section titled “1. シングルノードスタックを立ち上げる(SQLite)”-
起動します:
Terminal window docker compose -f deploy/compose/docker-compose.yml up -d設計上、得られるもの:
| プロパティ | 値 | |---|---| | ポート |
127.0.0.1:8443(HTTPS:REST + web UI)、127.0.0.1:8444(gRPC) — ホスト上の localhost にバインド。公開は意図的に | | データ | 名前付きボリュームolivares-data→/var/lib/olivares(SQLite ストア、audit 署名鍵、TLS 素材) | | 堅牢化 |65532:65532として実行、read-only root、全 capability をドロップ、no-new-privileges、tmpfs/tmp| | ヘルスチェック | コンテナ内にはなし(イメージは distroless — シェルなし)。ホストから/livezと/readyzをプローブする | -
ログからワンタイムのセットアップトークンを読み取ります:
Terminal window docker compose -f deploy/compose/docker-compose.yml logs olivares \| sed -n '/FIRST-BOOT SETUP/,/========================/p' -
最初の管理者を作成し、ログインし、組織を作成します — シングルノードチュートリアル とまったく同じです(API は同じ。TLS 証明書は初回起動時に自己署名されるため、 ブートストラップには
curl -kを使います):Terminal window 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. ソースを配線する
Section titled “2. ソースを配線する”ソースは OLIVARES_SOURCES_CONFIG で名指しされる1つのオペレーターファイルで宣言します
(ソースを接続する)。コンテナの場合、そのファイルをマウントし、
小さなオーバーライドで変数を設定します:
# 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"sources.json 内のパスはコンテナのパスであることを忘れないでください — 例えば
pgAudit のログ末尾には、Postgres のログディレクトリもコンテナ内に read-only でマウント
する必要があります。
3. 暗号化された DR バックアップ(backup プロファイル)
Section titled “3. 暗号化された DR バックアップ(backup プロファイル)”スタックは、暗号化され、ledger の連続性を損なわないバンドル(olivares dr backup)を
生成し、14日より古いバンドルをプルーニングするワンショットのバックアップサービスを同梱します:
# 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 backupスケジュールされた RPO のために、そのコマンドをホストの cron でラップし、olivares-backups
ボリュームをオフサイトにミラーしてください — 同一ホスト上のバックアップはディザスタ
リカバリではなく、パスフレーズはバンドルとは別に運ばれなければなりません(3-2-1)。リストア
ドリル(olivares dr verify)を含む完全な手順は、
バックアップとリストアにあります。
4. オプション:Postgres マルチテナントのオーバーライド
Section titled “4. オプション:Postgres マルチテナントのオーバーライド”マルチテナントのトポロジーには、Postgres オーバーライドを重ねます。これは Postgres 16 を
立ち上げ、最小権限の olivares_app ロール(superuser なし、BYPASSRLS なし —
row-level security がテナントのバックストップであるため、エンジンは特権ロールに対しては起動を
拒否します)をプロビジョニングし、エンジンをそれに向けます:
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次のステップ
Section titled “次のステップ”- 実物のシグナルを配線する: コネクターガイド。
- バックアップをスケジュールしドリルする: バックアップとリストア。
- モニタリングする: Prometheus メトリクス、SLO、アラート。
- マルチノードへ? Helm での Kubernetes、 HA とコレクター DaemonSet を含む。