compose.yml 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. # briven-core — coolify deployment template (build-from-source mode).
  2. #
  3. # Coolify clones the repo from code.konnos.org/flndrn/briven and runs
  4. # `docker compose build` against the local Dockerfiles. Same shape as
  5. # the dokploy template, minus the traefik labels — coolify owns
  6. # routing through its UI.
  7. #
  8. # Required env (set via coolify's per-service env UI or in .env):
  9. # BRIVEN_DOMAIN, BRIVEN_BETTER_AUTH_SECRET,
  10. # BRIVEN_AUDIT_IP_PEPPER, BRIVEN_ENCRYPTION_KEY,
  11. # BRIVEN_RUNTIME_SHARED_SECRET, BRIVEN_POSTGRES_PASSWORD,
  12. # BRIVEN_MITTERA_API_URL + BRIVEN_MITTERA_API_KEY + BRIVEN_MITTERA_WEBHOOK_SECRET (optional),
  13. # BRIVEN_GOOGLE_CLIENT_ID/SECRET (optional),
  14. # BRIVEN_OPEN_SIGNUPS (default false).
  15. #
  16. # Coolify-specific routing — assign these in the coolify UI per service:
  17. # web → ${BRIVEN_DOMAIN}
  18. # api → api.${BRIVEN_DOMAIN}
  19. # realtime → realtime.${BRIVEN_DOMAIN}
  20. # docs → docs.${BRIVEN_DOMAIN}
  21. # minio → s3.${BRIVEN_DOMAIN} (optional, only if you want public bucket access)
  22. # postgres + redis + runtime stay internal — no public routing.
  23. #
  24. # Per DOCKER.md §7: every service caps its log volume to prevent any one
  25. # noisy container from filling the host disk. Applied via the anchor.
  26. x-logging: &briven-logging
  27. driver: json-file
  28. options:
  29. max-size: '10m'
  30. max-file: '3'
  31. services:
  32. postgres:
  33. image: pgvector/pgvector:pg17
  34. restart: unless-stopped
  35. logging: *briven-logging
  36. environment:
  37. POSTGRES_PASSWORD: ${BRIVEN_POSTGRES_PASSWORD}
  38. POSTGRES_DB: briven_control
  39. volumes:
  40. - postgres_data:/var/lib/postgresql/data
  41. - ./postgres-init:/docker-entrypoint-initdb.d:ro
  42. redis:
  43. image: redis:7.4-alpine
  44. restart: unless-stopped
  45. logging: *briven-logging
  46. command: redis-server --appendonly yes
  47. volumes:
  48. - redis_data:/data
  49. minio:
  50. image: minio/minio:latest
  51. restart: unless-stopped
  52. logging: *briven-logging
  53. command: server /data --console-address ':9001'
  54. environment:
  55. MINIO_ROOT_USER: briven
  56. MINIO_ROOT_PASSWORD: ${BRIVEN_POSTGRES_PASSWORD}
  57. volumes:
  58. - minio_data:/data
  59. api:
  60. build:
  61. context: ../..
  62. dockerfile: apps/api/Dockerfile
  63. restart: unless-stopped
  64. logging: *briven-logging
  65. depends_on: [postgres, redis]
  66. environment:
  67. BRIVEN_ENV: production
  68. BRIVEN_API_PORT: '3001'
  69. BRIVEN_API_ORIGIN: https://api.${BRIVEN_DOMAIN}
  70. BRIVEN_WEB_ORIGIN: https://${BRIVEN_DOMAIN}
  71. BRIVEN_TRUSTED_ORIGINS: https://${BRIVEN_DOMAIN},https://api.${BRIVEN_DOMAIN}
  72. BRIVEN_DATABASE_URL: postgres://postgres:${BRIVEN_POSTGRES_PASSWORD}@postgres:5432/briven_control?sslmode=disable
  73. BRIVEN_DATA_PLANE_URL: postgres://postgres:${BRIVEN_POSTGRES_PASSWORD}@postgres:5432/briven_data?sslmode=disable
  74. BRIVEN_REDIS_URL: redis://redis:6379
  75. BRIVEN_RUNTIME_URL: http://runtime:3003
  76. BRIVEN_RUNTIME_SHARED_SECRET: ${BRIVEN_RUNTIME_SHARED_SECRET}
  77. BRIVEN_BETTER_AUTH_SECRET: ${BRIVEN_BETTER_AUTH_SECRET}
  78. BRIVEN_AUDIT_IP_PEPPER: ${BRIVEN_AUDIT_IP_PEPPER}
  79. BRIVEN_ENCRYPTION_KEY: ${BRIVEN_ENCRYPTION_KEY}
  80. BRIVEN_MITTERA_API_URL: ${BRIVEN_MITTERA_API_URL:-}
  81. BRIVEN_MITTERA_API_KEY: ${BRIVEN_MITTERA_API_KEY:-}
  82. BRIVEN_MITTERA_WEBHOOK_SECRET: ${BRIVEN_MITTERA_WEBHOOK_SECRET:-}
  83. BRIVEN_GOOGLE_CLIENT_ID: ${BRIVEN_GOOGLE_CLIENT_ID:-}
  84. BRIVEN_GOOGLE_CLIENT_SECRET: ${BRIVEN_GOOGLE_CLIENT_SECRET:-}
  85. BRIVEN_OPEN_SIGNUPS: ${BRIVEN_OPEN_SIGNUPS:-false}
  86. BRIVEN_MINIO_ENDPOINT: http://minio:9000
  87. BRIVEN_MINIO_ACCESS_KEY: briven
  88. BRIVEN_MINIO_SECRET_KEY: ${BRIVEN_POSTGRES_PASSWORD}
  89. runtime:
  90. build:
  91. context: ../..
  92. dockerfile: apps/runtime/Dockerfile
  93. restart: unless-stopped
  94. logging: *briven-logging
  95. environment:
  96. BRIVEN_ENV: production
  97. BRIVEN_RUNTIME_PORT: '3003'
  98. BRIVEN_RUNTIME_SHARED_SECRET: ${BRIVEN_RUNTIME_SHARED_SECRET}
  99. BRIVEN_RUNTIME_EXECUTOR: deno
  100. BRIVEN_RUNTIME_BUNDLE_DIR: /var/lib/briven/bundles
  101. volumes:
  102. - runtime_bundles:/var/lib/briven/bundles
  103. realtime:
  104. build:
  105. context: ../..
  106. dockerfile: apps/realtime/Dockerfile
  107. restart: unless-stopped
  108. logging: *briven-logging
  109. depends_on: [postgres]
  110. environment:
  111. BRIVEN_ENV: production
  112. BRIVEN_REALTIME_PORT: '3004'
  113. BRIVEN_API_INTERNAL_URL: http://api:3001
  114. BRIVEN_RUNTIME_SHARED_SECRET: ${BRIVEN_RUNTIME_SHARED_SECRET}
  115. BRIVEN_DATA_PLANE_URL: postgres://postgres:${BRIVEN_POSTGRES_PASSWORD}@postgres:5432/briven_data?sslmode=disable
  116. web:
  117. build:
  118. context: ../..
  119. dockerfile: apps/web/Dockerfile
  120. restart: unless-stopped
  121. logging: *briven-logging
  122. depends_on: [api]
  123. environment:
  124. BRIVEN_API_ORIGIN: https://api.${BRIVEN_DOMAIN}
  125. BRIVEN_WEB_ORIGIN: https://${BRIVEN_DOMAIN}
  126. docs:
  127. build:
  128. context: ../..
  129. dockerfile: apps/docs/Dockerfile
  130. restart: unless-stopped
  131. logging: *briven-logging
  132. depends_on: [api]
  133. environment:
  134. # Used by the /status page + /api/status/incidents.xml RSS feed
  135. # to read live incidents from /v1/status/incidents.
  136. BRIVEN_API_ORIGIN: https://api.${BRIVEN_DOMAIN}
  137. volumes:
  138. postgres_data:
  139. redis_data:
  140. minio_data:
  141. runtime_bundles: