Начало работы с Docker Compose
Репозиторий поставляет стек Compose в deploy/compose/: укреплённое одноузловое
развёртывание (встроенный SQLite, ноль внешних зависимостей) плюс два наложения —
override для мультиарендного Postgres и профиль резервного копирования для
аварийного восстановления. Этот туториал проведёт вас от up -d до настроенного
control plane с резервными копиями.
Контейнер оборачивает тот же единый бинарник, что и любая другая установка;
различается лишь упаковка. Команды ниже — это собственные задокументированные точки
входа стека (deploy/compose/*.yml), а поток первого запуска, который они приводят в
действие, — тот же, что проверен от начала до конца против бинарника в
туториале по одному узлу.
1. Поднимите одноузловой стек (SQLite)
Заголовок раздела «1. Поднимите одноузловой стек (SQLite)»-
Запустите его:
Окно терминала docker compose -f deploy/compose/docker-compose.yml up -dЧто вы получаете по проектированию:
| Свойство | Значение | |---|---| | Порты |
127.0.0.1:8443(HTTPS: REST + веб-UI),127.0.0.1:8444(gRPC) — привязаны к localhost на хосте; открывайте намеренно | | Данные | именованный томolivares-data→/var/lib/olivares(хранилище SQLite, ключ подписи аудита, материал TLS) | | Укрепление | работает как65532:65532, read-only root, все capabilities сброшены,no-new-privileges, tmpfs/tmp| | Healthcheck | нет внутри контейнера (образ distroless — нет shell). Зондируйте/livezи/readyzс хоста | -
Прочитайте одноразовый setup-токен из логов:
Окно терминала docker compose -f deploy/compose/docker-compose.yml logs olivares \| sed -n '/FIRST-BOOT SETUP/,/========================/p' -
Создайте первого администратора, войдите в систему и создайте свою организацию — ровно так, как в туториале по одному узлу (API тот же; сертификат TLS самоподписан при первом запуске, поэтому используйте
curl -kдля бутстрапа):Окно терминала 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. Подключите источники
Заголовок раздела «2. Подключите источники»Источники объявляются в одном файле оператора, именованном через
OLIVARES_SOURCES_CONFIG (подключите источник). Для
контейнера смонтируйте файл и задайте переменную небольшим 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"Помните, что пути внутри sources.json — это пути контейнера; например, «хвост»
журнала pgAudit требует, чтобы каталог журналов Postgres был также смонтирован в
контейнер только для чтения.
3. Зашифрованные DR-резервные копии (профиль backup)
Заголовок раздела «3. Зашифрованные DR-резервные копии (профиль backup)»Стек поставляет одноразовый сервис резервного копирования, который создаёт
зашифрованный, безопасный для непрерывности ledger bundle (olivares dr backup) и
удаляет bundle-ы старше 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Оберните эту команду в host cron для запланированного RPO и зеркалируйте том
olivares-backups на офсайт — резервная копия на том же хосте не является аварийным
восстановлением, а парольная фраза должна перемещаться отдельно от bundle-ов (3-2-1).
Полная процедура, включая учения по восстановлению (olivares dr verify), описана в
резервном копировании и восстановлении.
4. Опционально: override для мультиарендного Postgres
Заголовок раздела «4. Опционально: override для мультиарендного Postgres»Для мультиарендной топологии наложите override для 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 -dЗдоровье
Заголовок раздела «Здоровье»curl -ks https://localhost:8443/readyz# {"leader":true,"setup_required":false,"status":"ok","store":"up"}curl -ks https://localhost:8443/metrics | grep olivares_store_upДальнейшие шаги
Заголовок раздела «Дальнейшие шаги»- Подключите реальные сигналы: руководства по коннекторам.
- Планируйте и отрабатывайте резервные копии: резервное копирование и восстановление.
- Мониторьте его: метрики Prometheus, SLO и алерты.
- Переходите на несколько узлов? Kubernetes с Helm, включая HA и DaemonSet коллекторов.