Skip to main content
This guide covers how to run FalkorDB using Docker and Docker Compose, providing flexible deployment options for both development and production environments.

Docker Images

FalkorDB provides two main Docker images:

1. falkordb/falkordb

  • Includes: FalkorDB server + FalkorDB Browser
  • Use case: Development, quick start, interactive exploration
  • Ports:
    • 6379 - Redis/FalkorDB server
    • 3000 - FalkorDB Browser UI

2. falkordb/falkordb-server

  • Includes: FalkorDB server only
  • Use case: Production deployments, lighter footprint
  • Ports:
    • 6379 - Redis/FalkorDB server

3. falkordb/falkordb-browser

  • Includes: FalkorDB Browser UI only
  • Use case: Running browser separately from the server, custom deployments
  • Ports:
    • 3000 - FalkorDB Browser UI
  • Configuration: Requires FALKORDB_URL environment variable to connect to a FalkorDB server

Quick Start with Docker

Running with Browser (Development)

Access the browser at http://localhost:3000

Running Server Only (Production)

Running with Authentication

Running with Custom Configuration

Using Docker Compose

Docker Compose provides a more flexible and maintainable way to run FalkorDB, especially when you need to configure multiple services or manage complex setups.
Quick Start: You can download a ready-to-use docker-compose.yml file from the FalkorDB repository.

Basic Docker Compose Setup

Create a docker-compose.yml file:
Start FalkorDB:
Stop FalkorDB:

Production Setup with Persistence

For production environments, use the server-only image with data persistence:
Start with custom password:

Separate Server and Browser Setup

Run FalkorDB server and browser as separate containers:

Complete Production Setup

A comprehensive production-ready setup with all recommended configurations:

Docker Compose Commands

Common Docker Compose commands for managing FalkorDB:

Environment Variables

REDIS_ARGS

Pass arguments directly to the Redis server:
Common Redis arguments:
  • --requirepass <password> - Set authentication password
  • --appendonly yes - Enable AOF persistence
  • --appendfsync everysec - AOF sync frequency
  • --maxmemory <bytes> - Maximum memory limit
  • --maxmemory-policy <policy> - Eviction policy (e.g., allkeys-lru)

FALKORDB_ARGS

Pass configuration to FalkorDB module:
See the Configuration page for all available FalkorDB parameters.

Data Persistence

Using Named Volumes

Named volumes are the recommended approach for data persistence:

Using Bind Mounts

For specific host directory mapping:
Create the directory first:

Health Checks

Add health checks to ensure FalkorDB is running properly:
With authentication:

Networking

Custom Networks

Create isolated networks for better security:

Expose vs Ports

Use expose for internal communication and ports for external access:

Best Practices

  1. Use Environment Variables: Store sensitive information like passwords in .env files or environment variables: Create a .env file:
    Reference in docker-compose.yml:
  2. Enable Persistence: Always use volumes for production data:
  3. Set Resource Limits: Prevent resource exhaustion:
  4. Use Health Checks: Ensure automatic recovery:
  5. Configure Logging: Manage log file sizes:
  6. Separate Concerns: Use different images for different purposes:
    • Development: falkordb/falkordb (with browser)
    • Production: falkordb/falkordb-server (server only)
  7. Use Specific Tags: Pin to specific versions for stability:

Troubleshooting

Check Container Logs

Check Container Status

Test Connection

Access Redis CLI

View Running Processes

Inspect Configuration

Next Steps

Frequently Asked Questions

The falkordb/falkordb image includes both the FalkorDB server and the Browser UI (ports 6379 and 3000). The falkordb/falkordb-server image includes only the server (port 6379), making it lighter for production use.
Pass --requirepass <password> via the REDIS_ARGS environment variable: -e REDIS_ARGS='--requirepass mypassword'. For Docker Compose, add it to the environment section.
Use the FALKORDB_ARGS environment variable: -e FALKORDB_ARGS='THREAD_COUNT 8 CACHE_SIZE 50 TIMEOUT_MAX 60000'. See the Configuration page for all available parameters.
You need to mount a persistent volume. Use -v falkordb_data:/var/lib/falkordb/data to attach a Docker volume to the default data directory, and enable AOF for durability.
Add a healthcheck using redis-cli ping: test: ['CMD', 'redis-cli', 'ping']. With authentication, include -a yourpassword in the test command.