The infrastructure layer forDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/backtest-kit/backtest-kit-minio-s3-docker/llms.txt
Use this file to discover all available pages before exploring further.
backtest-kit-minio-s3-docker is split into two independent Compose files — docker/minio/docker-compose.yaml and docker/redis/docker-compose.yaml — rather than a single monolithic file. This separation means you can restart or upgrade either service without touching the other, run them on separate hosts, or swap in an external managed MinIO or Redis cluster by pointing the application’s environment variables elsewhere. Both files are designed for a local or on-premise host-mode deployment where the backtest-kit process (or container) connects to the services on localhost / 127.0.0.1.
MinIO service
MinIO is the S3-compatible object store that serves as the source of truth for all persisted backtest-kit data. All 16 persistence adapters write JSON objects into a single bucket namedbacktest-kit, organised under entity-specific key prefixes (candle-items/, signal-items/, etc.).
docker/minio/docker-compose.yaml
Ports
| Port | Purpose |
|---|---|
9000 | S3-compatible API — the endpoint backtest-kit connects to for all object reads and writes |
9001 | MinIO web console — browser-based bucket browser and administration UI |
Volume
The./minio_data:/data bind mount persists all bucket objects to a local directory called minio_data next to the Compose file. Data survives container restarts and recreations.
Environment variables
| Variable | Value | Description |
|---|---|---|
MINIO_ROOT_USER | minioadmin | Root access key used to authenticate S3 API requests |
MINIO_ROOT_PASSWORD | minioadmin | Root secret key |
MINIO_DEFAULT_BUCKETS | backtest-kit | Bucket created automatically on first start — must match the bucket name expected by the persistence adapters |
Starting MinIO
Redis service
Redis acts as the time-ordered index for the three entities that require newest-first listings: Log, Notification, and Storage. Rather than relying on costly S3 key scans, a connection service maintains per-minute Redis sets so thatlistNewest(limit) resolves in a handful of pipeline RTTs regardless of how many objects the bucket holds.
docker/redis/docker-compose.yaml
Port
Redis listens on its default port6379, mapped directly from the container to the host.
Volume
The./redis_data:/data bind mount persists the RDB snapshot so the time index survives a Redis restart. If Redis is flushed or the volume is lost, the application automatically falls back to a bucket LIST scan and re-warms the index.
Password
The--requirepass mysecurepassword command argument enforces authentication on every Redis connection. The same value must be set in CC_REDIS_PASSWORD in .env.
Starting Redis
Stopping services
Stop MinIO:--volumes to either command.
Verifying services are running
Check that both containers are up:Up.
Perform a quick MinIO health check against the S3 API port:
200 OK response confirms MinIO is accepting S3 API traffic. For Redis, connect via the CLI:
PONG response confirms Redis is ready.