Repository navigation
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
70 lines (68 loc) · 2.77 KB
/
Copy pathdocker-compose.yml
File metadata and controls
70 lines (68 loc) · 2.77 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
83EE
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
services:
minilake:
build:
context: .
dockerfile: Dockerfile
container_name: minilake
ports:
- "8000:8000" # HTTP
# HTTPS — uncomment together with MINILAKE_TLS below to serve TLS natively
# (stop any proxy already holding :8443, e.g. caddy, first).
# - "8443:8443"
environment:
MINILAKE_DATA_DIR: /data
MINILAKE_HOST: 0.0.0.0
MINILAKE_PORT: 8000
# Native HTTPS on :8443 (drop the external TLS proxy). Auto-generates a
# self-signed cert under /data/certs; trust it on the client via keychain
# import (macOS) or SSL_CERT_FILE (Linux). To bring your own CA-signed cert,
# set MINILAKE_SSL_CERTFILE / MINILAKE_SSL_KEYFILE (e.g. under /etc/minilake).
# MINILAKE_TLS: "1"
# MCP server for LLM agents, served at http://localhost:8000/mcp. Commented out by
# default: the tools execute SQL and spawn Docker containers, and minilake has no
# auth, so enabling it on a published port is close to handing out shell access.
# MINILAKE_MCP: "1"
# Host-header allowlist for the MCP endpoint. Empty (default) disables the check —
# right for a local emulator. Set it when reaching minilake under another hostname
# and you do want the check, e.g. "minilake,localhost".
# MINILAKE_MCP_ALLOWED_HOSTS: ""
# Named volume backing /data, shared with sibling job-execution containers.
MINILAKE_DOCKER_VOLUME: minilake_data
# Image used to execute job tasks (notebook_task / spark_python_task) in a real Spark container.
MINILAKE_SPARK_IMAGE: apache/spark:3.5.3-scala2.12-java17-python3-ubuntu
volumes:
- minilake_data:/data
- ./certs:/etc/minilake:ro
# Docker socket: lets minilake spawn sibling containers to run job tasks with real Spark.
- /var/run/docker.sock:/var/run/docker.sock
restart: unless-stopped
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8000/_minilake/health"]
interval: 10s
timeout: 5s
retries: 3
start_period: 10s
# Optional: real JupyterLab + PySpark + Delta Lake, sharing minilake's data
# volume. Not started by default — `docker compose --profile notebook up`.
jupyter:
build:
context: .
dockerfile: Dockerfile.notebook
container_name: minilake-jupyter
profiles: ["notebook"]
depends_on:
minilake:
condition: service_healthy
ports:
- "8888:8888"
environment:
# No token/password: this is a local-dev-only convenience, not for
# exposing the notebook server beyond your own machine.
JUPYTER_TOKEN: ""
volumes:
- minilake_data:/data
command: start-notebook.sh --NotebookApp.token='' --NotebookApp.password=''
volumes:
minilake_data:
name: minilake_data
driver: local