-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathdocker-compose.yml
161 lines (151 loc) · 5.15 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
version: '3.1'
services:
# used to proxy the core UI FE and BE requests to the right container
# Core FE is accessible on localhost:3000
# Scheduler FE is accessible on localhost:33000
proxy:
image: traefik:2.10 # The official Traefik docker image
command:
- '--log.level=DEBUG'
- '--api.insecure=true'
- '--providers.docker=true'
- '--providers.docker.exposedbydefault=false'
- '--entrypoints.web.address=:80'
- '--entrypoints.ep1.address=:3000'
- '--entrypoints.ep2.address=:33000'
ports:
- '3000:3000'
- '33000:33000'
- '8080:8080' # The Web UI (enabled by --api)
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
db:
image: postgres:11-alpine
restart: always
environment:
POSTGRES_PASSWORD: duopassword
POSTGRES_USER: duouser
POSTGRES_DB: duo
volumes:
- ../user-office-core/apps/backend/db_patches/:/docker-entrypoint-initdb.d/
scheduler-db:
image: postgres:11-alpine
restart: always
environment:
POSTGRES_DB: scheduler
POSTGRES_USER: schedulerUser
POSTGRES_PASSWORD: schedulerPassword
volumes:
- './apps/backend/db_patches/:/docker-entrypoint-initdb.d/'
factory:
image: 'ghcr.io/userofficeproject/user-office-factory:develop'
init: true
environment:
- NODE_ENV=development
- DATABASE_HOSTNAME=db
- DATABASE_PORT=5432
- DATABASE_USER=duouser
- DATABASE_PASSWORD=duopassword
- DATABASE_DATABASE=duo
cap_add:
- SYS_ADMIN
depends_on:
- db
gateway:
image: 'ghcr.io/userofficeproject/user-office-gateway:develop'
environment:
USER_OFFICE_BACKEND: http://backend:4000/graphql
USER_OFFICE_SCHEDULER_BACKEND: http://scheduler-backend:4200/graphql
NODE_ENV: development
ENABLE_SERVICE_POLLING: 1 # see gateway
KEEP_RETRYING: 1 # see gateway
ports:
- 4100:4100
labels:
- 'traefik.enable=true'
- 'traefik.http.services.backend.loadbalancer.server.port=4100'
- 'traefik.http.routers.gateway.rule=(Host(`localhost`) && PathPrefix(`/gateway`, `/graphql`))'
depends_on:
- backend
- scheduler-backend
rabbitmq:
image: 'rabbitmq:3-management'
ports:
- '15672:15672'
- '5672:5672'
volumes:
- ./rabbitmq-isolated.conf:/etc/rabbitmq/rabbitmq.config
frontend:
image: 'ghcr.io/userofficeproject/user-office-frontend:develop'
labels:
- 'traefik.enable=true'
- 'traefik.http.routers.core.rule=Host(`localhost`)'
- 'traefik.http.routers.core.entrypoints=ep1'
depends_on:
- gateway
scheduler-frontend:
image: 'ghcr.io/userofficeproject/user-office-scheduler-frontend:develop'
labels:
- 'traefik.enable=true'
- 'traefik.http.routers.scheduler.rule=Host(`localhost`)'
- 'traefik.http.routers.scheduler.entrypoints=ep2'
depends_on:
- gateway
backend:
image: 'ghcr.io/userofficeproject/user-office-backend:develop'
environment:
DATABASE_URL: postgres://duouser:duopassword@db:5432/duo
JWT_SECRET: qMyLZALzs229ybdQXNyzYRdju7X784TH
JWT_TOKEN_LIFE: 7d
BASE_URL: core.localhost:3000
SPARKPOST_TOKEN: dummytoken
NODE_ENV: development
UO_FEATURE_DISABLE_EAM: 1
USER_OFFICE_FACTORY_ENDPOINT: http://factory:4500/generate
RABBITMQ_HOSTNAME: rabbitmq
RABBITMQ_CORE_EXCHANGE_NAME: user_office_backend.fanout
RABBITMQ_SCHEDULER_EXCHANGE_NAME: user_office_scheduler_backend.fanout
RABBITMQ_EVENT_SCHEDULING_QUEUE_NAME: user-office-scheduler-backend.event_scheduling.queue
AUTH_DISCOVERY_URL: http://host.docker.internal:5001/.well-known/openid-configuration
AUTH_CLIENT_ID: useroffice
AUTH_CLIENT_SECRET: useroffice
DEPENDENCY_CONFIG: ess
TZ: Europe/Stockholm
DATE_FORMAT: dd-MM-yyyy
DATE_TIME_FORMAT: dd-MM-yyyy HH:mm
SCHEDULER_ENDPOINT: http://scheduler-backend:4200/graphql
depends_on:
- duo-development-authorization-server
- db
- rabbitmq
extra_hosts:
- 'host.docker.internal:host-gateway'
scheduler-backend:
image: 'ghcr.io/userofficeproject/user-office-scheduler-backend:develop'
environment:
NODE_ENV: development
PORT: 4200
DATABASE_HOSTNAME: scheduler-db
DATABASE_PORT: 5432
DATABASE_USER: schedulerUser
DATABASE_PASSWORD: schedulerPassword
DATABASE_DATABASE: scheduler
RABBITMQ_HOSTNAME: rabbitmq
RABBITMQ_PROPOSAL_SCHEDULING_QUEUE_NAME: user-office-backend.proposal_scheduling.queue
RABBITMQ_SCHEDULER_EXCHANGE_NAME: user_office_scheduler_backend.fanout
RABBITMQ_CORE_EXCHANGE_NAME: user_office_backend.fanout
USER_OFFICE_ENDPOINT: http://backend:4000/graphql
UPSERT_PROPOSAL_BOOKING_TRIGGER_STATUSES: SCHEDULING
depends_on:
- duo-development-authorization-server
- scheduler-db
- rabbitmq
duo-development-authorization-server:
image: 'ghcr.io/userofficeproject/user-office-development-authorization-server:develop'
ports:
- 5001:5001
environment:
DATABASE_URL: postgres://duouser:duopassword@db:5432/duo
PORT: 5001
depends_on:
- db