-
Notifications
You must be signed in to change notification settings - Fork 32
/
docker-compose.cloud.yml
88 lines (80 loc) · 3.01 KB
/
docker-compose.cloud.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
# This docker compose is the one used to host the cloud version of Agentlabs.
# Unless you really know what you are doing you should not use this one for yourself.
#
# It has a few particularities, the most important being:
# - there is no database spinned up by this container stack, as it is managed by a dedicated service
# - there is an additional cloud proxy which is responsible for handling cloud-special routing as well
# as wildcard certificates that are required to manage TLS for applications that are being created. This proxy gets built
# with support for our specific DNS provider so it does no fit a general use case.
version: '3.8'
networks:
# We explicitly define a subnet to avoid unintentional shadowing
default:
ipam:
config:
- subnet: 172.20.0.0/24
services:
cloud-proxy:
build:
context: cloud-proxy
volumes:
- ./cloud-proxy/Caddyfile:/etc/caddy/Caddyfile
- ./cloud-proxy/data:/data
ports:
- 80:80
- 443:443
depends_on:
- gateway
environment:
- CLOUD_CONSOLE_DOMAIN=${CLOUD_CONSOLE_DOMAIN}
- CLOUD_APP_DOMAIN=${CLOUD_APP_DOMAIN}
- CLOUD_APP_WILDCARD_DOMAIN=${CLOUD_APP_WILDCARD_DOMAIN}
- CLOUD_APP_WILDCARD_DOMAIN_DNS_API_KEY=${CLOUD_APP_WILDCARD_DOMAIN_DNS_API_KEY}
restart: unless-stopped
gateway:
image: ${CADDY_IMAGE}
volumes:
- ./caddy/config/Caddyfile:/etc/caddy/Caddyfile
- ./caddy/data:/data
depends_on:
- frontend
- server
restart: unless-stopped
server:
image: ${SERVER_IMAGE}
volumes:
- ./attachments/data:/app/attachments
environment:
- DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}
- USERS_ACCESS_TOKEN_SECRET=${USERS_ACCESS_TOKEN_SECRET}
- MEMBERS_ACCESS_TOKEN_SECRET=${MEMBERS_ACCESS_TOKEN_SECRET}
- MEMBERS_AUTH_CODE_EXPIRATION_DELAY_IN_MINUTES=${MEMBERS_AUTH_CODE_EXPIRATION_DELAY_IN_MINUTES}
- SMTP_HOST=${SMTP_HOST}
- SMTP_PORT=${SMTP_PORT}
- SMTP_USERNAME=${SMTP_USERNAME}
- SMTP_PASSWORD=${SMTP_PASSWORD}
- EMAIL_SENDER_ADDRESS=${EMAIL_SENDER_ADDRESS}
- EMAIL_SENDER_NAME=${EMAIL_SENDER_NAME}
- USERS_OAUTH_GOOGLE_CLIENT_ID=${USERS_OAUTH_GOOGLE_CLIENT_ID}
- USERS_OAUTH_GOOGLE_CLIENT_SECRET=${USERS_OAUTH_GOOGLE_CLIENT_SECRET}
- AES_ENCRYPTION_KEY=${AES_ENCRYPTION_KEY}
- SECRET_TELEMETRY_KEY=${SECRET_TELEMETRY_KEY}
restart: unless-stopped
frontend:
image: ${FRONTEND_IMAGE}
environment:
- PUBLIC_APP_HOST=${PUBLIC_AI_AGENT_DOMAIN}
depends_on:
- server
restart: unless-stopped
console:
image: ${CONSOLE_IMAGE}
environment:
- PUBLIC_AI_AGENT_DOMAIN=${PUBLIC_AI_AGENT_DOMAIN}
- PUBLIC_OAUTH_GOOGLE_CLIENT_ID=${PUBLIC_OAUTH_GOOGLE_CLIENT_ID}
- PUBLIC_TELEMETRY_KEY=${PUBLIC_TELEMETRY_KEY}
- PUBLIC_DISCORD_URL=${PUBLIC_DISCORD_URL}
- PUBLIC_INTERCOM_APP_ID=${INTERCOM_APP_ID}
depends_on:
- server
restart: unless-stopped