Files
madbase/docker-compose.yml

115 lines
2.9 KiB
YAML

services:
# Tenant Database (User Data)
db:
image: postgres:17-alpine
container_name: madbase_db
restart: unless-stopped
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: postgres
# Enable logical replication for Realtime
POSTGRES_HOST_AUTH_METHOD: trust
command: ["postgres", "-c", "wal_level=logical"]
ports:
- "5432:5432"
volumes:
- madbase_db_data:/var/lib/postgresql/data
# Control Plane Database (Project Config, Secrets)
control_db:
image: postgres:17-alpine
container_name: madbase_control_db
restart: unless-stopped
environment:
POSTGRES_USER: admin
POSTGRES_PASSWORD: admin_password
POSTGRES_DB: madbase_control
ports:
- "5433:5432"
volumes:
- madbase_control_db_data:/var/lib/postgresql/data
# Object Storage (S3 Compatible)
minio:
image: minio/minio
container_name: madbase_minio
restart: unless-stopped
environment:
MINIO_ROOT_USER: minioadmin
MINIO_ROOT_PASSWORD: minioadmin
command: server /data --console-address ":9001"
ports:
- "9000:9000"
- "9001:9001"
volumes:
- madbase_minio_data:/data
# Observability Stack
victoriametrics:
image: victoriametrics/victoria-metrics:v1.93.0
container_name: madbase_vm
ports:
- "8428:8428"
volumes:
- madbase_vm_data:/victoria-metrics-data
- ./prometheus.yml:/etc/prometheus/prometheus.yml
command:
- "--storageDataPath=/victoria-metrics-data"
- "--httpListenAddr=:8428"
- "--promscrape.config=/etc/prometheus/prometheus.yml"
extra_hosts:
- "host.docker.internal:host-gateway"
loki:
image: grafana/loki:2.9.2
container_name: madbase_loki
ports:
- "3100:3100"
command: -config.file=/etc/loki/local-config.yaml
volumes:
- madbase_loki_data:/loki
grafana:
image: grafana/grafana:10.2.0
container_name: madbase_grafana
ports:
- "3000:3000"
environment:
- GF_SECURITY_ADMIN_PASSWORD=admin
volumes:
- madbase_grafana_data:/var/lib/grafana
depends_on:
- victoriametrics
- loki
gateway:
image: localhost/madbase_gateway:latest
build: .
container_name: madbase_gateway
restart: unless-stopped
ports:
- "8000:8000"
environment:
- DATABASE_URL=postgres://admin:admin_password@control_db:5432/madbase_control
- DEFAULT_TENANT_DB_URL=postgres://postgres:postgres@db:5432/postgres
- S3_ENDPOINT=http://minio:9000
- JWT_SECRET=supersecret
- PORT=8000
- RUST_LOG=debug
- LOG_FORMAT=json
- RATE_LIMIT_PER_SECOND=1000
depends_on:
- db
- control_db
- victoriametrics
- loki
volumes:
madbase_db_data:
madbase_control_db_data:
madbase_minio_data:
madbase_vm_data:
madbase_loki_data:
madbase_grafana_data: