openclaw/saas/docker-compose.dev.yaml
Claude 727d2bf1f9
feat(saas): add Sprint 1 core infrastructure for SaaS platform
- Add PostgreSQL database schema (users, subscriptions, tenants, sessions)
- Implement authentication service with Argon2id password hashing
- Add JWT-based session management with access/refresh tokens
- Create REST API routes (auth, agent, usage, billing)
- Add encryption utilities (AES-256-GCM) and Vault integration
- Set up Docker Compose development environment
- Add Hono-based API server with middleware

This establishes the foundation for transforming moltbot into a
multi-tenant SaaS platform with secure authentication and
per-tenant encryption.

https://claude.ai/code/session_01UzVUSnxfEecZE8Yes3Zqw9
2026-01-30 00:34:53 +00:00

113 lines
2.6 KiB
YAML

version: "3.8"
services:
# PostgreSQL database
postgres:
image: postgres:16-alpine
container_name: moltbot-saas-postgres
environment:
POSTGRES_USER: moltbot
POSTGRES_PASSWORD: moltbot_dev_password
POSTGRES_DB: moltbot_saas
ports:
- "5432:5432"
volumes:
- postgres_data:/var/lib/postgresql/data
- ./src/db/schema.sql:/docker-entrypoint-initdb.d/01-schema.sql:ro
healthcheck:
test: ["CMD-SHELL", "pg_isready -U moltbot -d moltbot_saas"]
interval: 5s
timeout: 5s
retries: 5
networks:
- moltbot-network
# Redis for sessions and rate limiting
redis:
image: redis:7-alpine
container_name: moltbot-saas-redis
ports:
- "6379:6379"
volumes:
- redis_data:/data
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 5s
timeout: 5s
retries: 5
networks:
- moltbot-network
# HashiCorp Vault for secrets management (development mode)
vault:
image: hashicorp/vault:1.15
container_name: moltbot-saas-vault
environment:
VAULT_DEV_ROOT_TOKEN_ID: dev-root-token
VAULT_DEV_LISTEN_ADDRESS: 0.0.0.0:8200
ports:
- "8200:8200"
cap_add:
- IPC_LOCK
healthcheck:
test: ["CMD", "vault", "status"]
interval: 5s
timeout: 5s
retries: 5
networks:
- moltbot-network
# SaaS API server
api:
build:
context: .
dockerfile: Dockerfile.api
container_name: moltbot-saas-api
environment:
NODE_ENV: development
PORT: 3000
HOST: 0.0.0.0
DATABASE_URL: postgresql://moltbot:moltbot_dev_password@postgres:5432/moltbot_saas
REDIS_URL: redis://redis:6379
JWT_ACCESS_SECRET: dev-access-secret-minimum-32-characters-long
JWT_REFRESH_SECRET: dev-refresh-secret-minimum-32-characters-long
ENCRYPTION_KEY: dev-encryption-key-minimum-32-chars
VAULT_ADDR: http://vault:8200
VAULT_TOKEN: dev-root-token
FRONTEND_URL: http://localhost:5173
LOG_LEVEL: debug
ports:
- "3000:3000"
volumes:
- ./src:/app/src:ro
depends_on:
postgres:
condition: service_healthy
redis:
condition: service_healthy
vault:
condition: service_healthy
networks:
- moltbot-network
# Adminer for database management (optional)
adminer:
image: adminer:4
container_name: moltbot-saas-adminer
ports:
- "8080:8080"
environment:
ADMINER_DEFAULT_SERVER: postgres
depends_on:
- postgres
networks:
- moltbot-network
volumes:
postgres_data:
redis_data:
networks:
moltbot-network:
driver: bridge