Jump to content

Connect SuperML | Leeroopedia MCP: Equip your AI agents with best practices, code verification, and debugging knowledge. Powered by Leeroo — building Organizational Superintelligence. Contact us at founders@leeroo.com.

Implementation:Risingwavelabs Risingwave Docker Compose Lakekeeper

From Leeroopedia


Knowledge Sources
Domains Deployment, Iceberg, Infrastructure
Last Updated 2026-02-09 07:00 GMT

Overview

Docker Compose configuration for running a distributed RisingWave cluster with a Lakekeeper Iceberg REST catalog, including automatic warehouse bootstrapping and S3-compatible storage via MinIO.

Description

The docker/docker-compose-with-lakekeeper.yml file extends the standard distributed RisingWave deployment with a full Lakekeeper (Apache Iceberg REST catalog) stack. It defines 14 services: the core RisingWave components (meta-node-0, compute-node-0, frontend-node-0, compactor-0, compactor-1), infrastructure services (postgres-0, minio-0, prometheus-0, grafana-0, message_queue), and the Lakekeeper stack (lakekeeper, lakekeeper-migrate, lakekeeper-db, lakekeeper-bootstrap). The compactor-1 instance runs in dedicated-iceberg mode for Iceberg-specific compaction. The lakekeeper-bootstrap init container automatically creates a warehouse named risingwave-warehouse with MinIO as the S3-compatible storage backend.

Usage

Use this compose file to test or develop RisingWave's Apache Iceberg integration locally. It provides a complete self-contained environment with catalog, storage, and message queue services.

Code Reference

Source Location

  • Repository: risingwave
  • File: docker/docker-compose-with-lakekeeper.yml
  • Lines: L1-563

Signature

# Start the full Lakekeeper-integrated RisingWave stack
docker compose -f docker/docker-compose-with-lakekeeper.yml up -d

# Use a specific RisingWave image
RW_IMAGE=risingwavelabs/risingwave:v2.7.1 \
  docker compose -f docker/docker-compose-with-lakekeeper.yml up -d

Import

# No import needed - Docker Compose files are used directly
# Ensure Docker and Docker Compose are installed
docker compose version

I/O Contract

Inputs

Name Type Required Description
RW_IMAGE Environment variable No RisingWave Docker image (default: risingwavelabs/risingwave:v2.7.1)
LAKEKEEPER__SERVER_IMAGE Environment variable No Lakekeeper catalog image (default: quay.io/lakekeeper/catalog:latest-main)
ENABLE_TELEMETRY Environment variable No Enable/disable telemetry (default: true)
RW_SECRET_STORE_PRIVATE_KEY_HEX Environment variable No Secret store encryption key

Outputs

Name Type Description
Frontend Port 4566 PostgreSQL wire protocol endpoint for SQL queries
Meta node Port 5690 Meta service gRPC endpoint
Dashboard Port 5691 Built-in web dashboard
MinIO Ports 9301, 9400 Object storage API and console
Prometheus Port 9500 Metrics endpoint
Grafana Port 3001 Monitoring dashboards
Redpanda Ports 9092, 29092 Kafka-compatible message queue
Lakekeeper Port 8181 Iceberg REST catalog API
Lakekeeper DB Port 8433 PostgreSQL backing the catalog (mapped from 5432)

Service Architecture

The services are organized into three layers:

RisingWave Core:

  • meta-node-0 -- Metadata management, connects to postgres-0 and minio-0
  • compute-node-0 -- Stream/batch execution (8 GB memory limit)
  • frontend-node-0 -- SQL endpoint (port 4566)
  • compactor-0 -- Standard compaction (2 GB memory limit)
  • compactor-1 -- Iceberg-dedicated compaction mode (8 GB memory limit)

Infrastructure:

  • postgres-0 -- PostgreSQL 15 for RisingWave metadata
  • minio-0 -- MinIO for Hummock object storage and Iceberg data
  • prometheus-0 -- Metrics collection
  • grafana-0 -- Dashboard visualization
  • message_queue -- Redpanda for Kafka-compatible streaming

Lakekeeper Stack:

  • lakekeeper-db -- PostgreSQL 16 backing the Lakekeeper catalog
  • lakekeeper-migrate -- One-shot migration init container
  • lakekeeper -- Iceberg REST catalog service
  • lakekeeper-bootstrap -- Init container that creates the risingwave-warehouse with MinIO storage credentials

Usage Examples

Starting the Environment

cd docker

# Start all services
docker compose -f docker-compose-with-lakekeeper.yml up -d

# Wait for bootstrap to complete
docker compose -f docker-compose-with-lakekeeper.yml logs -f lakekeeper-bootstrap

# Connect to RisingWave
psql -h localhost -p 4566 -d dev -U root

Creating an Iceberg Sink

-- Connect to RisingWave (port 4566)
CREATE SOURCE orders (
  id INT,
  product VARCHAR,
  quantity INT
) WITH (
  connector = 'kafka',
  topic = 'orders',
  properties.bootstrap.server = 'message_queue:29092'
) FORMAT PLAIN ENCODE JSON;

CREATE SINK orders_iceberg FROM orders WITH (
  connector = 'iceberg',
  type = 'upsert',
  primary_key = 'id',
  catalog.type = 'rest',
  catalog.uri = 'http://lakekeeper:8181',
  catalog.name = 'risingwave-warehouse',
  s3.endpoint = 'http://minio-0:9301',
  s3.access.key = 'hummockadmin',
  s3.secret.key = 'hummockadmin',
  s3.region = 'us-east-1',
  database.name = 'default',
  table.name = 'orders'
);

Stopping the Environment

cd docker
docker compose -f docker-compose-with-lakekeeper.yml down -v

Related Pages

Implements Principle

Related Implementations

Page Connections

Double-click a node to navigate. Hold to expand connections.
Principle
Implementation
Heuristic
Environment