| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 |
- # briven-core — coolify deployment template (build-from-source mode).
- #
- # Coolify clones the repo from code.konnos.org/flndrn/briven and runs
- # `docker compose build` against the local Dockerfiles. Same shape as
- # the dokploy template, minus the traefik labels — coolify owns
- # routing through its UI.
- #
- # Required env (set via coolify's per-service env UI or in .env):
- # BRIVEN_DOMAIN, BRIVEN_BETTER_AUTH_SECRET,
- # BRIVEN_AUDIT_IP_PEPPER, BRIVEN_ENCRYPTION_KEY,
- # BRIVEN_RUNTIME_SHARED_SECRET, BRIVEN_POSTGRES_PASSWORD,
- # BRIVEN_MITTERA_API_URL + BRIVEN_MITTERA_API_KEY + BRIVEN_MITTERA_WEBHOOK_SECRET (optional),
- # BRIVEN_GOOGLE_CLIENT_ID/SECRET (optional),
- # BRIVEN_OPEN_SIGNUPS (default false).
- #
- # Coolify-specific routing — assign these in the coolify UI per service:
- # web → ${BRIVEN_DOMAIN}
- # api → api.${BRIVEN_DOMAIN}
- # realtime → realtime.${BRIVEN_DOMAIN}
- # docs → docs.${BRIVEN_DOMAIN}
- # minio → s3.${BRIVEN_DOMAIN} (optional, only if you want public bucket access)
- # postgres + redis + runtime stay internal — no public routing.
- #
- # Per DOCKER.md §7: every service caps its log volume to prevent any one
- # noisy container from filling the host disk. Applied via the anchor.
- x-logging: &briven-logging
- driver: json-file
- options:
- max-size: '10m'
- max-file: '3'
- services:
- postgres:
- image: pgvector/pgvector:pg17
- restart: unless-stopped
- logging: *briven-logging
- environment:
- POSTGRES_PASSWORD: ${BRIVEN_POSTGRES_PASSWORD}
- POSTGRES_DB: briven_control
- volumes:
- - postgres_data:/var/lib/postgresql/data
- - ./postgres-init:/docker-entrypoint-initdb.d:ro
- redis:
- image: redis:7.4-alpine
- restart: unless-stopped
- logging: *briven-logging
- command: redis-server --appendonly yes
- volumes:
- - redis_data:/data
- minio:
- image: minio/minio:latest
- restart: unless-stopped
- logging: *briven-logging
- command: server /data --console-address ':9001'
- environment:
- MINIO_ROOT_USER: briven
- MINIO_ROOT_PASSWORD: ${BRIVEN_POSTGRES_PASSWORD}
- volumes:
- - minio_data:/data
- api:
- build:
- context: ../..
- dockerfile: apps/api/Dockerfile
- restart: unless-stopped
- logging: *briven-logging
- depends_on: [postgres, redis]
- environment:
- BRIVEN_ENV: production
- BRIVEN_API_PORT: '3001'
- BRIVEN_API_ORIGIN: https://api.${BRIVEN_DOMAIN}
- BRIVEN_WEB_ORIGIN: https://${BRIVEN_DOMAIN}
- BRIVEN_TRUSTED_ORIGINS: https://${BRIVEN_DOMAIN},https://api.${BRIVEN_DOMAIN}
- BRIVEN_DATABASE_URL: postgres://postgres:${BRIVEN_POSTGRES_PASSWORD}@postgres:5432/briven_control?sslmode=disable
- BRIVEN_DATA_PLANE_URL: postgres://postgres:${BRIVEN_POSTGRES_PASSWORD}@postgres:5432/briven_data?sslmode=disable
- BRIVEN_REDIS_URL: redis://redis:6379
- BRIVEN_RUNTIME_URL: http://runtime:3003
- BRIVEN_RUNTIME_SHARED_SECRET: ${BRIVEN_RUNTIME_SHARED_SECRET}
- BRIVEN_BETTER_AUTH_SECRET: ${BRIVEN_BETTER_AUTH_SECRET}
- BRIVEN_AUDIT_IP_PEPPER: ${BRIVEN_AUDIT_IP_PEPPER}
- BRIVEN_ENCRYPTION_KEY: ${BRIVEN_ENCRYPTION_KEY}
- BRIVEN_MITTERA_API_URL: ${BRIVEN_MITTERA_API_URL:-}
- BRIVEN_MITTERA_API_KEY: ${BRIVEN_MITTERA_API_KEY:-}
- BRIVEN_MITTERA_WEBHOOK_SECRET: ${BRIVEN_MITTERA_WEBHOOK_SECRET:-}
- BRIVEN_GOOGLE_CLIENT_ID: ${BRIVEN_GOOGLE_CLIENT_ID:-}
- BRIVEN_GOOGLE_CLIENT_SECRET: ${BRIVEN_GOOGLE_CLIENT_SECRET:-}
- BRIVEN_OPEN_SIGNUPS: ${BRIVEN_OPEN_SIGNUPS:-false}
- BRIVEN_MINIO_ENDPOINT: http://minio:9000
- BRIVEN_MINIO_ACCESS_KEY: briven
- BRIVEN_MINIO_SECRET_KEY: ${BRIVEN_POSTGRES_PASSWORD}
- runtime:
- build:
- context: ../..
- dockerfile: apps/runtime/Dockerfile
- restart: unless-stopped
- logging: *briven-logging
- environment:
- BRIVEN_ENV: production
- BRIVEN_RUNTIME_PORT: '3003'
- BRIVEN_RUNTIME_SHARED_SECRET: ${BRIVEN_RUNTIME_SHARED_SECRET}
- BRIVEN_RUNTIME_EXECUTOR: deno
- BRIVEN_RUNTIME_BUNDLE_DIR: /var/lib/briven/bundles
- volumes:
- - runtime_bundles:/var/lib/briven/bundles
- realtime:
- build:
- context: ../..
- dockerfile: apps/realtime/Dockerfile
- restart: unless-stopped
- logging: *briven-logging
- depends_on: [postgres]
- environment:
- BRIVEN_ENV: production
- BRIVEN_REALTIME_PORT: '3004'
- BRIVEN_API_INTERNAL_URL: http://api:3001
- BRIVEN_RUNTIME_SHARED_SECRET: ${BRIVEN_RUNTIME_SHARED_SECRET}
- BRIVEN_DATA_PLANE_URL: postgres://postgres:${BRIVEN_POSTGRES_PASSWORD}@postgres:5432/briven_data?sslmode=disable
- web:
- build:
- context: ../..
- dockerfile: apps/web/Dockerfile
- restart: unless-stopped
- logging: *briven-logging
- depends_on: [api]
- environment:
- BRIVEN_API_ORIGIN: https://api.${BRIVEN_DOMAIN}
- BRIVEN_WEB_ORIGIN: https://${BRIVEN_DOMAIN}
- docs:
- build:
- context: ../..
- dockerfile: apps/docs/Dockerfile
- restart: unless-stopped
- logging: *briven-logging
- depends_on: [api]
- environment:
- # Used by the /status page + /api/status/incidents.xml RSS feed
- # to read live incidents from /v1/status/incidents.
- BRIVEN_API_ORIGIN: https://api.${BRIVEN_DOMAIN}
- volumes:
- postgres_data:
- redis_data:
- minio_data:
- runtime_bundles:
|