mirror of
https://github.com/dograh-hq/dograh.git
synced 2026-06-07 07:55:16 +02:00
If there are multiple telephony configurations, the form number should be initialized from the campaigns given telephonic configuration rather than the organization default telephonic configuration.
224 lines
5.8 KiB
YAML
224 lines
5.8 KiB
YAML
services:
|
|
postgres:
|
|
image: pgvector/pgvector:pg17
|
|
environment:
|
|
POSTGRES_USER: postgres
|
|
POSTGRES_PASSWORD: postgres
|
|
POSTGRES_DB: postgres
|
|
logging:
|
|
driver: "json-file"
|
|
options:
|
|
max-size: "10m"
|
|
max-file: "3"
|
|
ports:
|
|
- "5432:5432"
|
|
volumes:
|
|
- postgres_data:/var/lib/postgresql/data
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U postgres"]
|
|
interval: 3s
|
|
timeout: 3s
|
|
retries: 10
|
|
networks:
|
|
- app-network
|
|
|
|
redis:
|
|
image: redis:7
|
|
ports:
|
|
- "6379:6379"
|
|
command: >
|
|
--requirepass redissecret
|
|
volumes:
|
|
- redis_data:/data
|
|
healthcheck:
|
|
test: ["CMD", "redis-cli", "-a", "redissecret", "ping"]
|
|
interval: 3s
|
|
timeout: 10s
|
|
retries: 10
|
|
networks:
|
|
- app-network
|
|
|
|
minio:
|
|
image: minio/minio
|
|
container_name: minio
|
|
command: server /data --console-address ":9001"
|
|
environment:
|
|
MINIO_ROOT_USER: minioadmin
|
|
MINIO_ROOT_PASSWORD: minioadmin
|
|
MINIO_API_CORS_ALLOW_ORIGIN: "*"
|
|
ports:
|
|
- "127.0.0.1:9000:9000" # Bind to localhost explicitly
|
|
- "127.0.0.1:9001:9001"
|
|
volumes:
|
|
- minio-data:/data
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
networks:
|
|
- app-network
|
|
|
|
nginx:
|
|
image: nginx:alpine
|
|
container_name: nginx_https
|
|
profiles: ["remote"]
|
|
depends_on:
|
|
- ui
|
|
ports:
|
|
- "80:80"
|
|
- "443:443"
|
|
volumes:
|
|
- ./nginx.conf:/etc/nginx/conf.d/default.conf:ro
|
|
- ./certs:/etc/nginx/certs:ro
|
|
networks:
|
|
- app-network
|
|
|
|
api:
|
|
image: ${REGISTRY:-dograhai}/dograh-api:latest
|
|
volumes:
|
|
- shared-tmp:/tmp
|
|
environment:
|
|
# Core application config
|
|
ENVIRONMENT: "local"
|
|
LOG_LEVEL: "INFO"
|
|
|
|
# Replace this environment variable if you are using a custom
|
|
# domain to host the stack
|
|
BACKEND_API_ENDPOINT: "${BACKEND_API_ENDPOINT:-http://localhost:8000}"
|
|
|
|
# Database configuration (using containerized postgres)
|
|
DATABASE_URL: "postgresql+asyncpg://postgres:postgres@postgres:5432/postgres"
|
|
|
|
# Redis configuration (using containerized redis)
|
|
REDIS_URL: "redis://:redissecret@redis:6379"
|
|
|
|
# Storage configuration - using local MinIO
|
|
ENABLE_AWS_S3: "false"
|
|
|
|
# MinIO
|
|
MINIO_ENDPOINT: "minio:9000"
|
|
# Full URL (with scheme) browsers use to reach MinIO. For remote
|
|
# deployments behind HTTPS, set MINIO_PUBLIC_ENDPOINT in .env to
|
|
# e.g. https://your-server.example.com (nginx proxies /voice-audio/).
|
|
MINIO_PUBLIC_ENDPOINT: "${MINIO_PUBLIC_ENDPOINT:-http://localhost:9000}"
|
|
MINIO_ACCESS_KEY: "minioadmin"
|
|
MINIO_SECRET_KEY: "minioadmin"
|
|
MINIO_BUCKET: "voice-audio"
|
|
MINIO_SECURE: "false"
|
|
|
|
# FastAPI workers count
|
|
FASTAPI_WORKERS: 1
|
|
|
|
# Langfuse — credentials can be set here or per-organization via the UI
|
|
# at /settings. Tracing is automatically active when credentials are
|
|
# available; uncomment to set defaults for all organizations.
|
|
# LANGFUSE_SECRET_KEY: ""
|
|
# LANGFUSE_PUBLIC_KEY: ""
|
|
# LANGFUSE_HOST: ""
|
|
|
|
# TURN server configuration (for WebRTC NAT traversal in remote server)
|
|
# Uses time-limited credentials via TURN REST API (HMAC-SHA1)
|
|
TURN_HOST: "${TURN_HOST:-}"
|
|
TURN_SECRET: "${TURN_SECRET:-}"
|
|
|
|
OSS_JWT_SECRET: "${OSS_JWT_SECRET:-ChangeMeInProduction}"
|
|
|
|
# Telemetry
|
|
ENABLE_TELEMETRY: "${ENABLE_TELEMETRY:-true}"
|
|
POSTHOG_API_KEY: "phc_ItizB1dP6yv7ZYobbcqrpxTdbomDA8hJFSEmAMdYvIr"
|
|
POSTHOG_HOST: "https://us.i.posthog.com"
|
|
|
|
ports:
|
|
- "8000:8000"
|
|
depends_on:
|
|
postgres:
|
|
condition: service_healthy
|
|
redis:
|
|
condition: service_healthy
|
|
minio:
|
|
condition: service_healthy
|
|
cloudflared:
|
|
condition: service_started
|
|
healthcheck:
|
|
test:
|
|
[
|
|
"CMD-SHELL",
|
|
'python -c "import urllib.request; urllib.request.urlopen(''http://localhost:8000/api/v1/health'').read()"',
|
|
]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
start_period: 60s
|
|
networks:
|
|
- app-network
|
|
|
|
ui:
|
|
image: ${REGISTRY:-dograhai}/dograh-ui:latest
|
|
environment:
|
|
# Server-side URL (SSR, internal Docker network)
|
|
BACKEND_URL: "${BACKEND_URL:-http://api:8000}"
|
|
NODE_ENV: "oss"
|
|
# Flag to enable/ disable posthog
|
|
ENABLE_TELEMETRY: "${ENABLE_TELEMETRY:-true}"
|
|
|
|
# Posthog
|
|
POSTHOG_KEY: "phc_ItizB1dP6yv7ZYobbcqrpxTdbomDA8hJFSEmAMdYvIr"
|
|
POSTHOG_HOST: "https://us.posthog.com"
|
|
ports:
|
|
- "3010:3010"
|
|
depends_on:
|
|
api:
|
|
condition: service_healthy
|
|
healthcheck:
|
|
test:
|
|
[
|
|
"CMD-SHELL",
|
|
"wget --no-verbose --tries=1 --spider http://localhost:3010 || exit 1",
|
|
]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
start_period: 30s
|
|
networks:
|
|
- app-network
|
|
|
|
cloudflared:
|
|
image: cloudflare/cloudflared:latest
|
|
container_name: cloudflared-tunnel
|
|
command: tunnel --no-autoupdate --url http://api:8000 --metrics 0.0.0.0:2000
|
|
ports:
|
|
- "2000:2000" # Expose metrics endpoint
|
|
networks:
|
|
- app-network
|
|
|
|
coturn:
|
|
image: coturn/coturn:4.8.0
|
|
container_name: coturn
|
|
restart: unless-stopped
|
|
profiles: ["remote"]
|
|
ports:
|
|
- "3478:3478/udp"
|
|
- "3478:3478/tcp"
|
|
- "5349:5349/udp"
|
|
- "5349:5349/tcp"
|
|
- "49152-49200:49152-49200/udp"
|
|
volumes:
|
|
- ./turnserver.conf:/etc/coturn/turnserver.conf:ro
|
|
command:
|
|
- -c
|
|
- /etc/coturn/turnserver.conf
|
|
networks:
|
|
- app-network
|
|
|
|
volumes:
|
|
postgres_data:
|
|
redis_data:
|
|
minio-data:
|
|
driver: local
|
|
shared-tmp:
|
|
driver: local
|
|
|
|
networks:
|
|
app-network:
|
|
driver: bridge
|