-
Notifications
You must be signed in to change notification settings - Fork 195
/
docker-compose.yml
244 lines (237 loc) · 13.4 KB
/
docker-compose.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
name: panora
version: "3.8"
services:
postgres:
image: postgres:16.1
environment:
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: ${POSTGRES_DB}
ports:
- "5432:5432"
healthcheck:
test: ["CMD-SHELL", "pg_isready -d $${POSTGRES_DB} -U $${POSTGRES_USER}"]
interval: 10s
timeout: 5s
retries: 5
volumes:
- ./pg_data:/var/lib/postgresql/data
- ./packages/api/scripts/init.sql:/docker-entrypoint-initdb.d/init.sql
- ./packages/api/scripts/automatic_timestamps.sql:/docker-entrypoint-initdb.d/automatic_timestamps.sql
- ./packages/api/scripts/seed.sql:/docker-entrypoint-initdb.d/seed.sql
networks:
- backend
api:
image: panora.docker.scarf.sh/panoradotdev/backend-api:selfhosted
environment:
ENV: ${ENV}
DATABASE_URL: postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:5432/${POSTGRES_DB}?ssl=false
DISTRIBUTION: ${DISTRIBUTION}
WEBHOOK_INGRESS: ${WEBHOOK_INGRESS}
REDIRECT_TUNNEL_INGRESS: "https://panora-contributors-redirect.rachid-7e5.workers.dev/http://localhost:3000"
JWT_SECRET: ${JWT_SECRET}
SENTRY_ENABLED: ${SENTRY_ENABLED}
SENTRY_DSN: ${SENTRY_DSN}
REDIS_HOST: ${REDIS_HOST}
REDIS_USER: ${REDIS_USER}
REDIS_PASS: ${REDIS_PASS}
REDIS_PORT: ${REDIS_PORT}
REDIS_DB: ${REDIS_DB}
WEBAPP_URL: ${NEXT_PUBLIC_WEBAPP_DOMAIN}
ENCRYPT_CRYPTO_SECRET_KEY: ${ENCRYPT_CRYPTO_SECRET_KEY}
HUBSPOT_CRM_CLOUD_CLIENT_ID: "ca8ef3b9-201d-4472-84c3-1246f83d0b03"
HUBSPOT_CRM_CLOUD_CLIENT_SECRET: "16b75410-8884-4c4a-a6b7-ca50b61eb289"
ATTIO_CRM_CLOUD_CLIENT_ID: ${ATTIO_CRM_CLOUD_CLIENT_ID}
ATTIO_CRM_CLOUD_CLIENT_SECRET: ${ATTIO_CRM_CLOUD_CLIENT_SECRET}
ZOHO_CRM_CLOUD_CLIENT_ID: ${ZOHO_CRM_CLOUD_CLIENT_ID}
ZOHO_CRM_CLOUD_CLIENT_SECRET: ${ZOHO_CRM_CLOUD_CLIENT_SECRET}
PIPEDRIVE_CRM_CLOUD_CLIENT_ID: ${PIPEDRIVE_CRM_CLOUD_CLIENT_ID}
PIPEDRIVE_CRM_CLOUD_CLIENT_SECRET: ${PIPEDRIVE_CRM_CLOUD_CLIENT_SECRET}
ZENDESK_CRM_CLOUD_CLIENT_ID: ${ZENDESK_CRM_CLOUD_CLIENT_ID}
ZENDESK_CRM_CLOUD_CLIENT_SECRET: ${ZENDESK_CRM_CLOUD_CLIENT_SECRET}
PANORA_BASE_API_URL: ${PANORA_BASE_API_URL}
ZENDESK_TICKETING_CLOUD_CLIENT_ID: ${ZENDESK_TICKETING_CLOUD_CLIENT_ID}
ZENDESK_TICKETING_CLOUD_CLIENT_SECRET: ${ZENDESK_TICKETING_CLOUD_CLIENT_SECRET}
ZENDESK_TICKETING_CLOUD_SUBDOMAIN: ${ZENDESK_TICKETING_CLOUD_SUBDOMAIN}
FRONT_TICKETING_CLOUD_CLIENT_ID: ${FRONT_TICKETING_CLOUD_CLIENT_ID}
FRONT_TICKETING_CLOUD_CLIENT_SECRET: ${FRONT_TICKETING_CLOUD_CLIENT_SECRET}
CLICKUP_TICKETING_CLOUD_CLIENT_ID: ${CLICKUP_TICKETING_CLOUD_CLIENT_ID}
CLICKUP_TICKETING_CLOUD_CLIENT_SECRET: ${CLICKUP_TICKETING_CLOUD_CLIENT_SECRET}
GITHUB_TICKETING_CLOUD_CLIENT_ID: ${GITHUB_TICKETING_CLOUD_CLIENT_ID}
GITHUB_TICKETING_CLOUD_CLIENT_SECRET: ${GITHUB_TICKETING_CLOUD_CLIENT_SECRET}
GITLAB_TICKETING_CLOUD_CLIENT_ID: ${GITLAB_TICKETING_CLOUD_CLIENT_ID}
GITLAB_TICKETING_CLOUD_CLIENT_SECRET: ${GITLAB_TICKETING_CLOUD_CLIENT_SECRET}
GORGIAS_TICKETING_CLOUD_CLIENT_ID: ${GORGIAS_TICKETING_CLOUD_CLIENT_ID}
GORGIAS_TICKETING_CLOUD_CLIENT_SECRET: ${GORGIAS_TICKETING_CLOUD_CLIENT_SECRET}
GORGIAS_TICKETING_CLOUD_SUBDOMAIN: ${GORGIAS_TICKETING_CLOUD_SUBDOMAIN}
JIRA_TICKETING_CLOUD_CLIENT_ID: ${JIRA_TICKETING_CLOUD_CLIENT_ID}
JIRA_TICKETING_CLOUD_CLIENT_SECRET: ${JIRA_TICKETING_CLOUD_CLIENT_SECRET}
JIRA_SERVICEMGMT_TICKETING_CLOUD_CLIENT_ID: ${JIRA_SERVICEMGMT_TICKETING_CLOUD_CLIENT_ID}
JIRA_SERVICEMGMT_TICKETING_CLOUD_CLIENT_SECRET: ${JIRA_SERVICEMGMT_TICKETING_CLOUD_CLIENT_SECRET}
LINEAR_TICKETING_CLOUD_CLIENT_ID: ${LINEAR_TICKETING_CLOUD_CLIENT_ID}
LINEAR_TICKETING_CLOUD_CLIENT_SECRET: ${LINEAR_TICKETING_CLOUD_CLIENT_SECRET}
ACCELO_CRM_CLOUD_CLIENT_ID: ${ACCELO_CRM_CLOUD_CLIENT_ID}
ACCELO_CRM_CLOUD_CLIENT_SECRET: ${ACCELO_CRM_CLOUD_CLIENT_SECRET}
ACCELO_CRM_CLOUD_SUBDOMAIN: ${ACCELO_CRM_CLOUD_SUBDOMAIN}
CAPSULE_CRM_CLOUD_CLIENT_ID: ${CAPSULE_CRM_CLOUD_CLIENT_ID}
CAPSULE_CRM_CLOUD_CLIENT_SECRET: ${CAPSULE_CRM_CLOUD_CLIENT_SECRET}
CLOSE_CRM_CLOUD_CLIENT_ID: ${CLOSE_CRM_CLOUD_CLIENT_ID}
CLOSE_CRM_CLOUD_CLIENT_SECRET: ${CLOSE_CRM_CLOUD_CLIENT_SECRET}
COPPER_CRM_CLOUD_CLIENT_ID: ${COPPER_CRM_CLOUD_CLIENT_ID}
COPPER_CRM_CLOUD_CLIENT_SECRET: ${COPPER_CRM_CLOUD_CLIENT_SECRET}
KEAP_CRM_CLOUD_CLIENT_ID: ${KEAP_CRM_CLOUD_CLIENT_ID}
KEAP_CRM_CLOUD_CLIENT_SECRET: ${KEAP_CRM_CLOUD_CLIENT_SECRET}
TEAMLEADER_CRM_CLOUD_CLIENT_ID: ${TEAMLEADER_CRM_CLOUD_CLIENT_ID}
TEAMLEADER_CRM_CLOUD_CLIENT_SECRET: ${TEAMLEADER_CRM_CLOUD_CLIENT_SECRET}
TEAMWORK_CRM_CLOUD_CLIENT_ID: ${TEAMWORK_CRM_CLOUD_CLIENT_ID}
TEAMWORK_CRM_CLOUD_CLIENT_SECRET: ${TEAMWORK_CRM_CLOUD_CLIENT_SECRET}
AHA_TICKETING_CLOUD_CLIENT_ID: ${AHA_TICKETING_CLOUD_CLIENT_ID}
AHA_TICKETING_CLOUD_CLIENT_SECRET: ${AHA_TICKETING_CLOUD_CLIENT_SECRET}
AHA_TICKETING_CLOUD_SUBDOMAIN: ${AHA_TICKETING_CLOUD_SUBDOMAIN}
WRIKE_TICKETING_CLOUD_CLIENT_ID: ${WRIKE_TICKETING_CLOUD_CLIENT_ID}
WRIKE_TICKETING_CLOUD_CLIENT_SECRET: ${WRIKE_TICKETING_CLOUD_CLIENT_SECRET}
ASANA_TICKETING_CLOUD_CLIENT_ID: ${ASANA_TICKETING_CLOUD_CLIENT_ID}
ASANA_TICKETING_CLOUD_CLIENT_SECRET: ${ASANA_TICKETING_CLOUD_CLIENT_SECRET}
PENNYLANE_ACCOUNTING_CLOUD_CLIENT_ID: ${PENNYLANE_ACCOUNTING_CLOUD_CLIENT_ID}
PENNYLANE_ACCOUNTING_CLOUD_CLIENT_SECRET: ${PENNYLANE_ACCOUNTING_CLOUD_CLIENT_SECRET}
FRESHBOOKS_ACCOUNTING_CLOUD_CLIENT_ID: ${FRESHBOOKS_ACCOUNTING_CLOUD_CLIENT_ID}
FRESHBOOKS_ACCOUNTING_CLOUD_CLIENT_SECRET: ${FRESHBOOKS_ACCOUNTING_CLOUD_CLIENT_SECRET}
FREEAGENT_ACCOUNTING_CLOUD_CLIENT_ID: ${FREEAGENT_ACCOUNTING_CLOUD_CLIENT_ID}
FREEAGENT_ACCOUNTING_CLOUD_CLIENT_SECRET: ${FREEAGENT_ACCOUNTING_CLOUD_CLIENT_SECRET}
SAGE_ACCOUNTING_CLOUD_CLIENT_ID: ${SAGE_ACCOUNTING_CLOUD_CLIENT_ID}
SAGE_ACCOUNTING_CLOUD_CLIENT_SECRET: ${SAGE_ACCOUNTING_CLOUD_CLIENT_SECRET}
MONEYBIRD_ACCOUNTING_CLOUD_CLIENT_ID: ${MONEYBIRD_ACCOUNTING_CLOUD_CLIENT_ID}
MONEYBIRD_ACCOUNTING_CLOUD_CLIENT_SECRET: ${MONEYBIRD_ACCOUNTING_CLOUD_CLIENT_SECRET}
QUICKBOOKS_ACCOUNTING_CLOUD_CLIENT_ID: ${QUICKBOOKS_ACCOUNTING_CLOUD_CLIENT_ID}
QUICKBOOKS_ACCOUNTING_CLOUD_CLIENT_SECRET: ${QUICKBOOKS_ACCOUNTING_CLOUD_CLIENT_SECRET}
WAVE_FINANCIAL_ACCOUNTING_CLOUD_CLIENT_ID: ${WAVE_FINANCIAL_ACCOUNTING_CLOUD_CLIENT_ID}
WAVE_FINANCIAL_ACCOUNTING_CLOUD_CLIENT_SECRET: ${WAVE_FINANCIAL_ACCOUNTING_CLOUD_CLIENT_SECRET}
GETRESPONSE_MARKETINGAUTOMATION_CLOUD_CLIENT_ID: ${GETRESPONSE_MARKETINGAUTOMATION_CLOUD_CLIENT_ID}
GETRESPONSE_MARKETINGAUTOMATION_CLOUD_CLIENT_SECRET: ${GETRESPONSE_MARKETINGAUTOMATION_CLOUD_CLIENT_SECRET}
MAILCHIMP_MARKETINGAUTOMATION_CLOUD_CLIENT_ID: ${MAILCHIMP_MARKETINGAUTOMATION_CLOUD_CLIENT_ID}
MAILCHIMP_MARKETINGAUTOMATION_CLOUD_CLIENT_SECRET: ${MAILCHIMP_MARKETINGAUTOMATION_CLOUD_CLIENT_SECRET}
PODIUM_MARKETINGAUTOMATION_CLOUD_CLIENT_ID: ${PODIUM_MARKETINGAUTOMATION_CLOUD_CLIENT_ID}
PODIUM_MARKETINGAUTOMATION_CLOUD_CLIENT_SECRET: ${PODIUM_MARKETINGAUTOMATION_CLOUD_CLIENT_SECRET}
XERO_ACCOUNTING_CLOUD_CLIENT_ID: ${XERO_ACCOUNTING_CLOUD_CLIENT_ID}
XERO_ACCOUNTING_CLOUD_CLIENT_SECRET: ${XERO_ACCOUNTING_CLOUD_CLIENT_ID}
GOOGLEDRIVE_FILESTORAGE_CLOUD_CLIENT_ID: ${GOOGLEDRIVE_FILESTORAGE_CLOUD_CLIENT_ID}
GOOGLEDRIVE_FILESTORAGE_CLOUD_CLIENT_SECRET: ${GOOGLEDRIVE_FILESTORAGE_CLOUD_CLIENT_SECRET}
ONEDRIVE_FILESTORAGE_CLOUD_CLIENT_ID: ${ONEDRIVE_FILESTORAGE_CLOUD_CLIENT_ID}
ONEDRIVE_FILESTORAGE_CLOUD_CLIENT_SECRET: ${ONEDRIVE_FILESTORAGE_CLOUD_CLIENT_SECRET}
SHAREPOINT_FILESTORAGE_CLOUD_CLIENT_ID: ${SHAREPOINT_FILESTORAGE_CLOUD_CLIENT_ID}
SHAREPOINT_FILESTORAGE_CLOUD_CLIENT_SECRET: ${SHAREPOINT_FILESTORAGE_CLOUD_CLIENT_SECRET}
DROPBOX_FILESTORAGE_CLOUD_CLIENT_ID: ${DROPBOX_FILESTORAGE_CLOUD_CLIENT_ID}
DROPBOX_FILESTORAGE_CLOUD_CLIENT_SECRET: ${DROPBOX_FILESTORAGE_CLOUD_CLIENT_SECRET}
BOX_FILESTORAGE_CLOUD_CLIENT_ID: ${BOX_FILESTORAGE_CLOUD_CLIENT_ID}
BOX_FILESTORAGE_CLOUD_CLIENT_SECRET: ${BOX_FILESTORAGE_CLOUD_CLIENT_SECRET}
KEAP_MARKETINGAUTOMATION_CLOUD_CLIENT_ID: ${KEAP_MARKETINGAUTOMATION_CLOUD_CLIENT_ID}
KEAP_MARKETINGAUTOMATION_CLOUD_CLIENT_SECRET: ${KEAP_MARKETINGAUTOMATION_CLOUD_CLIENT_SECRET}
NOTION_PRODUCTIVITY_CLOUD_CLIENT_ID: ${NOTION_PRODUCTIVITY_CLOUD_CLIENT_ID}
NOTION_PRODUCTIVITY_CLOUD_CLIENT_SECRET: ${NOTION_PRODUCTIVITY_CLOUD_CLIENT_SECRET}
SLACK_PRODUCTIVITY_CLOUD_CLIENT_ID: ${SLACK_PRODUCTIVITY_CLOUD_CLIENT_ID}
SLACK_PRODUCTIVITY_CLOUD_CLIENT_SECRET: ${SLACK_PRODUCTIVITY_CLOUD_CLIENT_SECRET}
KLAVIYO_TICKETING_CLOUD_CLIENT_ID: ${KLAVIYO_TICKETING_CLOUD_CLIENT_ID}
KLAVIYO_TICKETING_CLOUD_CLIENT_SECRET: ${KLAVIYO_TICKETING_CLOUD_CLIENT_SECRET}
HELPSCOUT_TICKETING_CLOUD_CLIENT_ID: ${HELPSCOUT_TICKETING_CLOUD_CLIENT_ID}
HELPSCOUT_TICKETING_CLOUD_CLIENT_SECRET: ${HELPSCOUT_TICKETING_CLOUD_CLIENT_SECRET}
IRONCLAD_TICKETING_CLOUD_CLIENT_ID: ${IRONCLAD_TICKETING_CLOUD_CLIENT_ID}
IRONCLAD_TICKETING_CLOUD_CLIENT_SECRET: ${IRONCLAD_TICKETING_CLOUD_CLIENT_SECRET}
SHOPIFY_ECOMMERCE_CLOUD_CLIENT_ID: ${SHOPIFY_ECOMMERCE_CLOUD_CLIENT_ID}
SHOPIFY_ECOMMERCE_CLOUD_CLIENT_SECRET: ${SHOPIFY_ECOMMERCE_CLOUD_CLIENT_SECRET}
SQUARESPACE_ECOMMERCE_CLOUD_CLIENT_ID: ${SQUARESPACE_ECOMMERCE_CLOUD_CLIENT_ID}
SQUARESPACE_ECOMMERCE_CLOUD_CLIENT_SECRET: ${SQUARESPACE_ECOMMERCE_CLOUD_CLIENT_SECRET}
EBAY_ECOMMERCE_CLOUD_CLIENT_ID: ${EBAY_ECOMMERCE_CLOUD_CLIENT_ID}
EBAY_ECOMMERCE_CLOUD_CLIENT_SECRET: ${EBAY_ECOMMERCE_CLOUD_CLIENT_SECRET}
EBAY_ECOMMERCE_CLOUD_RUVALUE: ${EBAY_ECOMMERCE_CLOUD_RUVALUE}
FAIRE_ECOMMERCE_CLOUD_CLIENT_ID: ${FAIRE_ECOMMERCE_CLOUD_CLIENT_ID}
FAIRE_ECOMMERCE_CLOUD_CLIENT_SECRET: ${FAIRE_ECOMMERCE_CLOUD_CLIENT_SECRET}
WEBFLOW_ECOMMERCE_CLOUD_CLIENT_ID: ${WEBFLOW_ECOMMERCE_CLOUD_CLIENT_ID}
WEBFLOW_ECOMMERCE_CLOUD_CLIENT_SECRET: ${WEBFLOW_ECOMMERCE_CLOUD_CLIENT_SECRET}
AMAZON_ECOMMERCE_CLOUD_CLIENT_ID: ${AMAZON_ECOMMERCE_CLOUD_CLIENT_ID}
AMAZON_ECOMMERCE_CLOUD_CLIENT_SECRET: ${AMAZON_ECOMMERCE_CLOUD_CLIENT_SECRET}
AMAZON_ECOMMERCE_CLOUD_APPLICATION_ID: ${AMAZON_ECOMMERCE_CLOUD_APPLICATION_ID}
EMAIL_SENDING_ADDRESS: ${EMAIL_SENDING_ADDRESS}
SMTP_HOST: ${SMTP_HOST}
SMTP_PORT: ${SMTP_PORT}
SMTP_USER: ${SMTP_USER}
SMTP_PASSWORD: ${SMTP_PASSWORD}
MICROSOFTDYNAMICSSALES_CRM_CLOUD_CLIENT_ID: ${MICROSOFTDYNAMICSSALES_CRM_CLOUD_CLIENT_ID}
MICROSOFTDYNAMICSSALES_CRM_CLOUD_CLIENT_SECRET: ${MICROSOFTDYNAMICSSALES_CRM_CLOUD_CLIENT_SECRET}
POSTHOG_HOST: "https://us.i.posthog.com"
POSTHOG_KEY: "phc_WhWJfNPOHAuWVdyTacGxrPa9JW54scnofA9KVEjFcFw"
PH_TELEMETRY: "TRUE"
SALESFORCE_CRM_CLOUD_CLIENT_ID: ${SALESFORCE_CRM_CLOUD_CLIENT_ID}
SALESFORCE_CRM_CLOUD_CLIENT_SECRET: ${SALESFORCE_CRM_CLOUD_CLIENT_SECRET}
OPENAI_API_KEY: ${OPENAI_API_KEY}
JINA_API_KEY: ${JINA_API_KEY}
COHERE_API_KEY: ${COHERE_API_KEY}
AWS_S3_REGION: ${AWS_S3_REGION}
AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID}
AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY}
UNSTRUCTURED_API_KEY: ${UNSTRUCTURED_API_KEY}
UNSTRUCTURED_API_URL: ${UNSTRUCTURED_API_URL}
PINECONE_API_KEY: ${PINECONE_API_KEY}
PINECONE_INDEX_NAME: ${PINECONE_INDEX_NAME}
QDRANT_BASE_URL: ${QDRANT_BASE_URL}
QDRANT_API_KEY: ${QDRANT_API_KEY}
QDRANT_COLLECTION_NAME: ${QDRANT_COLLECTION_NAME}
CHROMADB_URL: ${CHROMADB_URL}
CHROMADB_COLLECTION_NAME: ${CHROMADB_COLLECTION_NAME}
WEAVIATE_URL: ${WEAVIATE_URL}
WEAVIATE_API_KEY: ${WEAVIATE_API_KEY}
WEAVIATE_CLASS_NAME: ${WEAVIATE_CLASS_NAME}
TURBOPUFFER_API_KEY: ${TURBOPUFFER_API_KEY}
MILVUS_ADDRESS: ${MILVUS_ADDRESS}
MILVUS_COLLECTION_NAME: ${MILVUS_COLLECTION_NAME}
restart: unless-stopped
ports:
- 3000:3000
depends_on:
postgres:
condition: service_healthy
networks:
- backend
healthcheck:
test: ["CMD-SHELL", "curl", "-f", "http://localhost:3000/health"]
start_period: 60s
interval: 10s
timeout: 1s
retries: 50
redis:
image: valkey/valkey:7.2-alpine
container_name: 'Redis'
command: valkey-server --requirepass ${REDIS_PASS}
ports:
- '${REDIS_PORT}:${REDIS_PORT}'
volumes:
- ./redis-data:/data
networks:
- backend
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 5s
retries: 5
start_period: 10s
webapp-next:
image: panora.docker.scarf.sh/panoradotdev/frontend-webapp:selfhosted
environment:
NEXT_PUBLIC_POSTHOG_KEY: "phc_WhWJfNPOHAuWVdyTacGxrPa9JW54scnofA9KVEjFcFw"
NEXT_PUBLIC_POSTHOG_HOST: "https://us.i.posthog.com"
NEXT_PUBLIC_DISTRIBUTION: "selfhost"
NEXT_PUBLIC_BACKEND_DOMAIN: ${NEXT_PUBLIC_BACKEND_DOMAIN}
NEXT_PUBLIC_MAGIC_LINK_DOMAIN: ${NEXT_PUBLIC_MAGIC_LINK_DOMAIN}
NEXT_PUBLIC_WEBAPP_DOMAIN: ${NEXT_PUBLIC_WEBAPP_DOMAIN}
NEXT_PUBLIC_REDIRECT_WEBHOOK_INGRESS: "https://panora-contributors-redirect.rachid-7e5.workers.dev/http://localhost:3000"
restart: unless-stopped
ports:
- 80:8090
depends_on:
postgres:
condition: service_healthy
networks:
- backend
- frontend
networks:
frontend:
backend: