Bruin CLI Step 2 of 4
Build a local DuckLake lakehouse
1) Create docker-compose.yml
Create docker-compose.yml beside .bruin.yml:
services:
# Stores DuckLake metadata.
catalog:
image: postgres:16
environment:
POSTGRES_USER: lakehouse
POSTGRES_PASSWORD: lakehouse
POSTGRES_DB: ducklake_meta
ports:
- "5434:5432"
volumes:
- catalog-data:/var/lib/postgresql/data
# Stores Parquet data and exposes an S3-compatible API.
storage:
image: minio/minio:latest
command: server /data --console-address ":9001"
environment:
MINIO_ROOT_USER: minioadmin
MINIO_ROOT_PASSWORD: minioadmin
ports:
- "9010:9000"
- "9011:9001"
volumes:
- storage-data:/data
# Creates the DuckLake bucket once, then exits.
create-bucket:
image: minio/mc:latest
depends_on:
- storage
entrypoint: >
/bin/sh -c "
until (mc alias set local http://storage:9000 minioadmin minioadmin) do echo 'waiting for minio...' && sleep 1; done;
mc mb --ignore-existing local/ducklake;
echo 'bucket ready';
"
volumes:
catalog-data:
storage-data: