Advertisement
Guest User

Untitled

a guest
Jun 18th, 2024
227
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 14.88 KB | None | 0 0
  1. ```
  2. services:
  3. supabase-kong:
  4. image: 'kong:2.8.1'
  5. entrypoint: 'bash -c ''eval "echo \"$$(cat ~/temp.yml)\"" > ~/kong.yml && /docker-entrypoint.sh kong docker-start'''
  6. depends_on:
  7. supabase-analytics:
  8. condition: service_healthy
  9. environment:
  10. - SERVICE_FQDN_SUPABASEKONG
  11. - 'JWT_SECRET=${SERVICE_PASSWORD_JWT}'
  12. - KONG_DATABASE=off
  13. - KONG_DECLARATIVE_CONFIG=/home/kong/kong.yml
  14. - 'KONG_DNS_ORDER=LAST,A,CNAME'
  15. - 'KONG_PLUGINS=request-transformer,cors,key-auth,acl,basic-auth'
  16. - KONG_NGINX_PROXY_PROXY_BUFFER_SIZE=160k
  17. - 'KONG_NGINX_PROXY_PROXY_BUFFERS=64 160k'
  18. - 'SUPABASE_ANON_KEY=${SERVICE_SUPABASEANON_KEY}'
  19. - 'SUPABASE_SERVICE_KEY=${SERVICE_SUPABASESERVICE_KEY}'
  20. - 'DASHBOARD_USERNAME=${SERVICE_USER_ADMIN}'
  21. - 'DASHBOARD_PASSWORD=${SERVICE_PASSWORD_ADMIN}'
  22. volumes:
  23. -
  24. type: bind
  25. source: ./volumes/api/kong.yml
  26. target: /home/kong/temp.yml
  27. supabase-studio:
  28. image: 'supabase/studio:20240514-6f5cabd'
  29. healthcheck:
  30. test:
  31. - CMD
  32. - node
  33. - '-e'
  34. - "require('http').get('http://127.0.0.1:3000/api/profile', (r) => {if (r.statusCode !== 200) process.exit(1); else process.exit(0); }).on('error', () => process.exit(1))"
  35. timeout: 5s
  36. interval: 5s
  37. retries: 3
  38. depends_on:
  39. supabase-analytics:
  40. condition: service_healthy
  41. environment:
  42. - HOSTNAME=0.0.0.0
  43. - 'STUDIO_PG_META_URL=http://supabase-meta:8080'
  44. - 'POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRES}'
  45. - 'DEFAULT_ORGANIZATION_NAME=${STUDIO_DEFAULT_ORGANIZATION:-Default Organization}'
  46. - 'DEFAULT_PROJECT_NAME=${STUDIO_DEFAULT_PROJECT:-Default Project}'
  47. - 'SUPABASE_URL=http://supabase-kong:8000'
  48. - 'SUPABASE_PUBLIC_URL=${SERVICE_FQDN_SUPABASEKONG}'
  49. - 'SUPABASE_ANON_KEY=${SERVICE_SUPABASEANON_KEY}'
  50. - 'SUPABASE_SERVICE_KEY=${SERVICE_SUPABASESERVICE_KEY}'
  51. - 'AUTH_JWT_SECRET=${SERVICE_PASSWORD_JWT}'
  52. - 'LOGFLARE_API_KEY=${SERVICE_PASSWORD_LOGFLARE}'
  53. - 'LOGFLARE_URL=http://supabase-analytics:4000'
  54. - NEXT_PUBLIC_ENABLE_LOGS=true
  55. - NEXT_ANALYTICS_BACKEND_PROVIDER=postgres
  56. supabase-db:
  57. image: 'supabase/postgres:15.1.1.41'
  58. healthcheck:
  59. test: 'pg_isready -U postgres -h 127.0.0.1'
  60. interval: 5s
  61. timeout: 5s
  62. retries: 10
  63. depends_on:
  64. supabase-vector:
  65. condition: service_healthy
  66. command:
  67. - postgres
  68. - '-c'
  69. - config_file=/etc/postgresql/postgresql.conf
  70. - '-c'
  71. - log_min_messages=fatal
  72. restart: unless-stopped
  73. environment:
  74. - POSTGRES_HOST=/var/run/postgresql
  75. - 'PGPORT=${POSTGRES_PORT:-5432}'
  76. - 'POSTGRES_PORT=${POSTGRES_PORT:-5432}'
  77. - 'PGPASSWORD=${SERVICE_PASSWORD_POSTGRES}'
  78. - 'POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRES}'
  79. - 'PGDATABASE=${POSTGRES_DB:-postgres}'
  80. - 'POSTGRES_DB=${POSTGRES_DB:-postgres}'
  81. - 'JWT_SECRET=${SERVICE_PASSWORD_JWT}'
  82. - 'JWT_EXP=${JWT_EXPIRY:-3600}'
  83. volumes:
  84. - 'supabase-db-data:/var/lib/postgresql/data'
  85. -
  86. type: bind
  87. source: ./volumes/db/realtime.sql
  88. target: /docker-entrypoint-initdb.d/migrations/99-realtime.sql
  89. -
  90. type: bind
  91. source: ./volumes/db/webhooks.sql
  92. target: /docker-entrypoint-initdb.d/init-scripts/98-webhooks.sql
  93. -
  94. type: bind
  95. source: ./volumes/db/roles.sql
  96. target: /docker-entrypoint-initdb.d/init-scripts/99-roles.sql
  97. -
  98. type: bind
  99. source: ./volumes/db/jwt.sql
  100. target: /docker-entrypoint-initdb.d/init-scripts/99-jwt.sql
  101. -
  102. type: bind
  103. source: ./volumes/db/logs.sql
  104. target: /docker-entrypoint-initdb.d/migrations/99-logs.sql
  105. - 'supabase-db-config:/etc/postgresql-custom'
  106. supabase-analytics:
  107. image: 'supabase/logflare:1.4.0'
  108. healthcheck:
  109. test:
  110. - CMD
  111. - curl
  112. - 'http://127.0.0.1:4000/health'
  113. timeout: 5s
  114. interval: 5s
  115. retries: 10
  116. restart: unless-stopped
  117. depends_on:
  118. supabase-db:
  119. condition: service_healthy
  120. environment:
  121. - LOGFLARE_NODE_HOST=127.0.0.1
  122. - DB_USERNAME=supabase_admin
  123. - 'DB_DATABASE=${POSTGRES_DB:-postgres}'
  124. - 'DB_HOSTNAME=${POSTGRES_HOST:-supabase-db}'
  125. - 'DB_PORT=${POSTGRES_PORT:-5432}'
  126. - 'DB_PASSWORD=${SERVICE_PASSWORD_POSTGRES}'
  127. - DB_SCHEMA=_analytics
  128. - 'LOGFLARE_API_KEY=${SERVICE_PASSWORD_LOGFLARE}'
  129. - LOGFLARE_SINGLE_TENANT=true
  130. - LOGFLARE_SINGLE_TENANT_MODE=true
  131. - LOGFLARE_SUPABASE_MODE=true
  132. - LOGFLARE_MIN_CLUSTER_SIZE=1
  133. - 'POSTGRES_BACKEND_URL=postgresql://supabase_admin:${SERVICE_PASSWORD_POSTGRES}@${POSTGRES_HOST:-supabase-db}:${POSTGRES_PORT:-5432}/${POSTGRES_DB:-postgres}'
  134. - POSTGRES_BACKEND_SCHEMA=_analytics
  135. - LOGFLARE_FEATURE_FLAG_OVERRIDE=multibackend=true
  136. supabase-vector:
  137. image: 'timberio/vector:0.28.1-alpine'
  138. healthcheck:
  139. test:
  140. - CMD
  141. - wget
  142. - '--no-verbose'
  143. - '--tries=1'
  144. - '--spider'
  145. - 'http://supabase-vector:9001/health'
  146. timeout: 5s
  147. interval: 5s
  148. retries: 3
  149. volumes:
  150. -
  151. type: bind
  152. source: ./volumes/logs/vector.yml
  153. target: /etc/vector/vector.yml
  154. read_only: true
  155. - '/var/run/docker.sock:/var/run/docker.sock:ro'
  156. environment:
  157. - 'LOGFLARE_API_KEY=${SERVICE_PASSWORD_LOGFLARE}'
  158. command:
  159. - '--config'
  160. - etc/vector/vector.yml
  161. supabase-rest:
  162. image: 'postgrest/postgrest:v12.0.1'
  163. depends_on:
  164. supabase-db:
  165. condition: service_healthy
  166. supabase-analytics:
  167. condition: service_healthy
  168. restart: unless-stopped
  169. environment:
  170. - 'PGRST_DB_URI=postgres://authenticator:${SERVICE_PASSWORD_POSTGRES}@${POSTGRES_HOST:-supabase-db}:${POSTGRES_PORT:-5432}/${POSTGRES_DB:-postgres}'
  171. - 'PGRST_DB_SCHEMAS=${PGRST_DB_SCHEMAS:-public}'
  172. - PGRST_DB_ANON_ROLE=anon
  173. - 'PGRST_JWT_SECRET=${SERVICE_PASSWORD_JWT}'
  174. - PGRST_DB_USE_LEGACY_GUCS=false
  175. - 'PGRST_APP_SETTINGS_JWT_SECRET=${SERVICE_PASSWORD_JWT}'
  176. - 'PGRST_APP_SETTINGS_JWT_EXP=${JWT_EXPIRY:-3600}'
  177. command: postgrest
  178. exclude_from_hc: true
  179. supabase-auth:
  180. image: 'supabase/gotrue:v2.151.0'
  181. depends_on:
  182. supabase-db:
  183. condition: service_healthy
  184. supabase-analytics:
  185. condition: service_healthy
  186. healthcheck:
  187. test:
  188. - CMD
  189. - wget
  190. - '--no-verbose'
  191. - '--tries=1'
  192. - '--spider'
  193. - 'http://127.0.0.1:9999/health'
  194. timeout: 5s
  195. interval: 5s
  196. retries: 3
  197. environment:
  198. - GOTRUE_API_HOST=0.0.0.0
  199. - GOTRUE_API_PORT=9999
  200. - 'API_EXTERNAL_URL=${API_EXTERNAL_URL:-http://supabase-kong:8000}'
  201. - GOTRUE_DB_DRIVER=postgres
  202. - 'GOTRUE_DB_DATABASE_URL=postgres://supabase_auth_admin:${SERVICE_PASSWORD_POSTGRES}@${POSTGRES_HOST:-supabase-db}:${POSTGRES_PORT:-5432}/${POSTGRES_DB:-postgres}'
  203. - 'GOTRUE_SITE_URL=${SERVICE_FQDN_SUPABASEKONG}'
  204. - 'GOTRUE_URI_ALLOW_LIST=${ADDITIONAL_REDIRECT_URLS}'
  205. - 'GOTRUE_DISABLE_SIGNUP=${DISABLE_SIGNUP:-false}'
  206. - GOTRUE_JWT_ADMIN_ROLES=service_role
  207. - GOTRUE_JWT_AUD=authenticated
  208. - GOTRUE_JWT_DEFAULT_GROUP_NAME=authenticated
  209. - 'GOTRUE_JWT_EXP=${JWT_EXPIRY:-3600}'
  210. - 'GOTRUE_JWT_SECRET=${SERVICE_PASSWORD_JWT}'
  211. - 'GOTRUE_EXTERNAL_EMAIL_ENABLED=${ENABLE_EMAIL_SIGNUP:-true}'
  212. - 'GOTRUE_EXTERNAL_ANONYMOUS_USERS_ENABLED=${ENABLE_ANONYMOUS_USERS:-false}'
  213. - 'GOTRUE_MAILER_AUTOCONFIRM=${ENABLE_EMAIL_AUTOCONFIRM:-false}'
  214. - 'GOTRUE_SMTP_ADMIN_EMAIL=${SMTP_ADMIN_EMAIL}'
  215. - 'GOTRUE_SMTP_HOST=${SMTP_HOST}'
  216. - 'GOTRUE_SMTP_PORT=${SMTP_PORT:-587}'
  217. - 'GOTRUE_SMTP_USER=${SMTP_USER}'
  218. - 'GOTRUE_SMTP_PASS=${SMTP_PASS}'
  219. - 'GOTRUE_SMTP_SENDER_NAME=${SMTP_SENDER_NAME}'
  220. - 'GOTRUE_MAILER_URLPATHS_INVITE=${MAILER_URLPATHS_INVITE:-/auth/v1/verify}'
  221. - 'GOTRUE_MAILER_URLPATHS_CONFIRMATION=${MAILER_URLPATHS_CONFIRMATION:-/auth/v1/verify}'
  222. - 'GOTRUE_MAILER_URLPATHS_RECOVERY=${MAILER_URLPATHS_RECOVERY:-/auth/v1/verify}'
  223. - 'GOTRUE_MAILER_URLPATHS_EMAIL_CHANGE=${MAILER_URLPATHS_EMAIL_CHANGE:-/auth/v1/verify}'
  224. - 'GOTRUE_MAILER_TEMPLATES_INVITE=${MAILER_TEMPLATES_INVITE}'
  225. - 'GOTRUE_MAILER_TEMPLATES_CONFIRMATION=${MAILER_TEMPLATES_CONFIRMATION}'
  226. - 'GOTRUE_MAILER_TEMPLATES_RECOVERY=${MAILER_TEMPLATES_RECOVERY}'
  227. - 'GOTRUE_MAILER_TEMPLATES_MAGIC_LINK=${MAILER_TEMPLATES_MAGIC_LINK}'
  228. - 'GOTRUE_MAILER_TEMPLATES_EMAIL_CHANGE=${MAILER_TEMPLATES_EMAIL_CHANGE}'
  229. - 'GOTRUE_MAILER_SUBJECTS_CONFIRMATION=${MAILER_SUBJECTS_CONFIRMATION}'
  230. - 'GOTRUE_MAILER_SUBJECTS_RECOVERY=${MAILER_SUBJECTS_RECOVERY}'
  231. - 'GOTRUE_MAILER_SUBJECTS_MAGIC_LINK=${MAILER_SUBJECTS_MAGIC_LINK}'
  232. - 'GOTRUE_MAILER_SUBJECTS_EMAIL_CHANGE=${MAILER_SUBJECTS_EMAIL_CHANGE}'
  233. - 'GOTRUE_MAILER_SUBJECTS_INVITE=${MAILER_SUBJECTS_INVITE}'
  234. - 'GOTRUE_EXTERNAL_PHONE_ENABLED=${ENABLE_PHONE_SIGNUP:-true}'
  235. - 'GOTRUE_SMS_AUTOCONFIRM=${ENABLE_PHONE_AUTOCONFIRM:-true}'
  236. realtime-dev:
  237. image: 'supabase/realtime:v2.28.32'
  238. container_name: realtime-dev.supabase-realtime
  239. depends_on:
  240. supabase-db:
  241. condition: service_healthy
  242. supabase-analytics:
  243. condition: service_healthy
  244. healthcheck:
  245. test:
  246. - CMD
  247. - curl
  248. - '-sSfL'
  249. - '--head'
  250. - '-o'
  251. - /dev/null
  252. - '-H'
  253. - 'Authorization: Bearer ${ANON_KEY}'
  254. - 'http://127.0.0.1:4000/api/tenants/realtime-dev/health'
  255. timeout: 5s
  256. interval: 5s
  257. retries: 3
  258. environment:
  259. - PORT=4000
  260. - 'DB_HOST=${POSTGRES_HOST:-supabase-db}'
  261. - 'DB_PORT=${POSTGRES_PORT:-5432}'
  262. - DB_USER=supabase_admin
  263. - 'DB_PASSWORD=${SERVICE_PASSWORD_POSTGRES}'
  264. - 'DB_NAME=${POSTGRES_DB:-postgres}'
  265. - 'DB_AFTER_CONNECT_QUERY=SET search_path TO _realtime'
  266. - DB_ENC_KEY=supabaserealtime
  267. - 'API_JWT_SECRET=${SERVICE_PASSWORD_JWT}'
  268. - FLY_ALLOC_ID=fly123
  269. - FLY_APP_NAME=realtime
  270. - 'SECRET_KEY_BASE=${SECRET_PASSWORD_REALTIME}'
  271. - 'ERL_AFLAGS=-proto_dist inet_tcp'
  272. - ENABLE_TAILSCALE=false
  273. - "DNS_NODES=''"
  274. command: "sh -c \"/app/bin/migrate && /app/bin/realtime eval 'Realtime.Release.seeds(Realtime.Repo)' && /app/bin/server\"\n"
  275. supabase-minio:
  276. image: minio/minio
  277. environment:
  278. - 'MINIO_ROOT_USER=${SERVICE_USER_MINIO}'
  279. - 'MINIO_ROOT_PASSWORD=${SERVICE_PASSWORD_MINIO}'
  280. command: 'server --console-address ":9001" /data'
  281. healthcheck:
  282. test: 'sleep 5 && exit 0'
  283. interval: 2s
  284. timeout: 10s
  285. retries: 5
  286. volumes:
  287. - './volumes/storage:/data'
  288. minio-createbucket:
  289. image: minio/mc
  290. restart: 'no'
  291. environment:
  292. - 'MINIO_ROOT_USER=${SERVICE_USER_MINIO}'
  293. - 'MINIO_ROOT_PASSWORD=${SERVICE_PASSWORD_MINIO}'
  294. depends_on:
  295. supabase-minio:
  296. condition: service_healthy
  297. entrypoint:
  298. - /entrypoint.sh
  299. volumes:
  300. -
  301. type: bind
  302. source: ./entrypoint.sh
  303. target: /entrypoint.sh
  304. supabase-storage:
  305. image: 'supabase/storage-api:v1.0.6'
  306. depends_on:
  307. supabase-db:
  308. condition: service_healthy
  309. supabase-rest:
  310. condition: service_started
  311. imgproxy:
  312. condition: service_started
  313. healthcheck:
  314. test:
  315. - CMD
  316. - wget
  317. - '--no-verbose'
  318. - '--tries=1'
  319. - '--spider'
  320. - 'http://127.0.0.1:5000/status'
  321. timeout: 5s
  322. interval: 5s
  323. retries: 3
  324. environment:
  325. - SERVER_PORT=5000
  326. - SERVER_REGION=local
  327. - MULTI_TENANT=false
  328. - 'AUTH_JWT_SECRET=${SERVICE_PASSWORD_JWT}'
  329. - 'DATABASE_URL=postgres://supabase_storage_admin:${SERVICE_PASSWORD_POSTGRES}@${POSTGRES_HOST:-supabase-db}:${POSTGRES_PORT:-5432}/${POSTGRES_DB:-postgres}'
  330. - DB_INSTALL_ROLES=false
  331. - STORAGE_BACKEND=s3
  332. - STORAGE_S3_BUCKET=stub
  333. - 'STORAGE_S3_ENDPOINT=http://supabase-minio:9000'
  334. - STORAGE_S3_FORCE_PATH_STYLE=true
  335. - STORAGE_S3_REGION=us-east-1
  336. - 'AWS_ACCESS_KEY_ID=${SERVICE_USER_MINIO}'
  337. - 'AWS_SECRET_ACCESS_KEY=${SERVICE_PASSWORD_MINIO}'
  338. - UPLOAD_FILE_SIZE_LIMIT=524288000
  339. - UPLOAD_FILE_SIZE_LIMIT_STANDARD=524288000
  340. - UPLOAD_SIGNED_URL_EXPIRATION_TIME=120
  341. - TUS_URL_PATH=/upload/resumable
  342. - TUS_MAX_SIZE=3600000
  343. - IMAGE_TRANSFORMATION_ENABLED=true
  344. - 'IMGPROXY_URL=http://imgproxy:8080'
  345. - IMGPROXY_REQUEST_TIMEOUT=15
  346. - DATABASE_SEARCH_PATH=storage
  347. volumes:
  348. - './volumes/storage:/var/lib/storage'
  349. imgproxy:
  350. image: 'darthsim/imgproxy:v3.8.0'
  351. healthcheck:
  352. test:
  353. - CMD
  354. - imgproxy
  355. - health
  356. timeout: 5s
  357. interval: 5s
  358. retries: 3
  359. environment:
  360. - IMGPROXY_LOCAL_FILESYSTEM_ROOT=/
  361. - IMGPROXY_USE_ETAG=true
  362. - 'IMGPROXY_ENABLE_WEBP_DETECTION=${IMGPROXY_ENABLE_WEBP_DETECTION:-true}'
  363. volumes:
  364. - './volumes/storage:/var/lib/storage'
  365. supabase-meta:
  366. image: 'supabase/postgres-meta:v0.80.0'
  367. depends_on:
  368. supabase-db:
  369. condition: service_healthy
  370. supabase-analytics:
  371. condition: service_healthy
  372. environment:
  373. - PG_META_PORT=8080
  374. - 'PG_META_DB_HOST=${POSTGRES_HOST:-supabase-db}'
  375. - 'PG_META_DB_PORT=${POSTGRES_PORT:-5432}'
  376. - 'PG_META_DB_NAME=${POSTGRES_DB:-postgres}'
  377. - PG_META_DB_USER=supabase_admin
  378. - 'PG_META_DB_PASSWORD=${SERVICE_PASSWORD_POSTGRES}'
  379. supabase-edge-functions:
  380. image: 'supabase/edge-runtime:v1.53.3'
  381. depends_on:
  382. supabase-analytics:
  383. condition: service_healthy
  384. healthcheck:
  385. test:
  386. - CMD
  387. - echo
  388. - 'Edge Functions is healthy'
  389. timeout: 5s
  390. interval: 5s
  391. retries: 3
  392. environment:
  393. - 'JWT_SECRET=${SERVICE_PASSWORD_JWT}'
  394. - 'SUPABASE_URL=http://supabase-kong:8000'
  395. - 'SUPABASE_ANON_KEY=${SERVICE_SUPABASEANON_KEY}'
  396. - 'SUPABASE_SERVICE_ROLE_KEY=${SERVICE_SUPABASESERVICE_KEY}'
  397. - 'SUPABASE_DB_URL=postgresql://postgres:${SERVICE_PASSWORD_POSTGRES}@${POSTGRES_HOST:-supabase-db}:${POSTGRES_PORT:-5432}/${POSTGRES_DB:-postgres}'
  398. - 'VERIFY_JWT=${FUNCTIONS_VERIFY_JWT:-false}'
  399. volumes:
  400. - './volumes/functions:/home/deno/functions'
  401. -
  402. type: bind
  403. source: ./volumes/functions/main/index.ts
  404. target: /home/deno/functions/main/index.ts
  405. -
  406. type: bind
  407. source: ./volumes/functions/hello/index.ts
  408. target: /home/deno/functions/hello/index.ts
  409. command:
  410. - start
  411. - '--main-service'
  412. - /home/deno/functions/main
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement