added initial roadmap and implementation
This commit is contained in:
113
docker-compose.yml
Normal file
113
docker-compose.yml
Normal file
@@ -0,0 +1,113 @@
|
||||
services:
|
||||
# Tenant Database (User Data)
|
||||
db:
|
||||
image: postgres:15-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:15-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:
|
||||
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:
|
||||
Reference in New Issue
Block a user