Running with Docker

This guide shows how to run Korvet using Docker.

Quick Start

Run Korvet with default configuration:

docker run -p 9092:9092 redisfield/korvet:latest

This starts Korvet on port 9092 with an embedded Redis instance.

Using External Redis

To use an external Redis instance:

docker run -p 9092:9092 \
  -e KORVET_REDIS_URI=redis://redis.example.com:6379 \
  redisfield/korvet:latest

With authentication:

docker run -p 9092:9092 \
  -e KORVET_REDIS_URI=redis://redis.example.com:6379 \
  -e KORVET_REDIS_USERNAME=default \
  -e KORVET_REDIS_PASSWORD=${REDIS_PASSWORD} \
  redisfield/korvet:latest

Docker Compose

Create a docker-compose.yml file:

services:
  redis:
    image: redis:latest
    ports:
      - "6379:6379"

  korvet:
    image: redisfield/korvet:latest
    ports:
      - "9092:9092"
    environment:
      KORVET_REDIS_URI: redis://redis:6379
    depends_on:
      - redis

With Redis authentication:

services:
  redis:
    image: redis:latest
    command: redis-server --requirepass ${REDIS_PASSWORD}
    ports:
      - "6379:6379"

  korvet:
    image: redisfield/korvet:latest
    ports:
      - "9092:9092"
    environment:
      KORVET_REDIS_URI: redis://redis:6379
      KORVET_REDIS_PASSWORD: ${REDIS_PASSWORD}
    depends_on:
      - redis

Run with:

docker compose up

Configuration

See Configuration for all available options.

JVM Tuning

Direct Memory for High Concurrency

For production deployments with many concurrent connections (e.g., Databricks Spark, Flink), increase the direct memory limit:

docker run -p 9092:9092 \
  -e JAVA_TOOL_OPTIONS="-XX:MaxDirectMemorySize=256m" \
  redisfield/korvet:latest

Or in Docker Compose:

services:
  korvet:
    image: redisfield/korvet:latest
    environment:
      JAVA_TOOL_OPTIONS: "-XX:MaxDirectMemorySize=256m"