-
Notifications
You must be signed in to change notification settings - Fork 13.8k
Expand file tree
/
Copy pathdocker-compose-ci.yml
More file actions
265 lines (253 loc) · 8.84 KB
/
Copy pathdocker-compose-ci.yml
File metadata and controls
265 lines (253 loc) · 8.84 KB
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
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
services:
rocketchat:
volumes:
- ${COVERAGE_DIR:-/tmp/coverage}:${COVERAGE_DIR:-/tmp/coverage}
build:
dockerfile: ${GITHUB_WORKSPACE:-}/apps/meteor/.docker/Dockerfile.alpine
context: /tmp/build
target: release-standard
x-bake:
platforms:
- linux/amd64
- linux/arm64
args:
DENO_VERSION: ${DENO_VERSION:-}
image: ghcr.io/${LOWERCASE_REPOSITORY}/rocket.chat:${DOCKER_TAG}${DOCKER_TAG_SUFFIX_ROCKETCHAT:-}
environment:
- 'TEST_MODE=${TEST_MODE:-true}'
- APPS_ENGINE_RUNTIME_BACKEND=${APPS_ENGINE_RUNTIME_BACKEND:-}
- DEBUG=${DEBUG:-}
- EXIT_UNHANDLEDPROMISEREJECTION=true
- MONGO_URL=mongodb://mongo:27017/rocketchat?replicaSet=rs0
- 'MONGO_OPLOG_URL=${MONGO_OPLOG_URL:-}'
- 'TRANSPORTER=${TRANSPORTER:-}'
- MOLECULER_LOG_LEVEL=info
- 'ROCKETCHAT_LICENSE=${ENTERPRISE_LICENSE:-}'
- 'COVERAGE_DIR=${COVERAGE_DIR:-}'
- 'COVERAGE_REPORTER=${COVERAGE_REPORTER:-}'
- 'COVERAGE_FILE_NAME=${COVERAGE_FILE_NAME:-}'
- OVERWRITE_SETTING_Log_Level=${DEBUG_LOG_LEVEL:-0}
- Federation_Service_Enabled=true
- 'Federation_Service_Domain=rc.host'
- HEAP_USAGE_PERCENT=99
# keep server sockets alive longer than traefik's 90s idleConnTimeout so
# the proxy always closes pooled conns first and never reuses a dead one
- HTTP_SOCKET_TIMEOUT_MS=120000
depends_on:
- traefik
- mongo
labels:
traefik.enable: true
traefik.http.services.rocketchat.loadbalancer.server.port: 3000
traefik.http.routers.rocketchat.service: rocketchat
traefik.http.routers.rocketchat.rule: PathPrefix(`/`)
traefik.http.routers.rocketchat.middlewares: test-retry
traefik.http.middlewares.test-retry.retry.attempts: 4
# dedicated route for dynamic-import: buffering coalesces the tiny POST
# into a single upstream write, closing the go-transport early-response
# race window (response beating the request-write bookkeeping kills the
# conn mid body copy); scoped here because suite-wide buffering broke
# 404/CORS response semantics
traefik.http.routers.rocketchat-dynimport.rule: PathPrefix(`/__meteor__/dynamic-import`)
traefik.http.routers.rocketchat-dynimport.service: rocketchat
traefik.http.routers.rocketchat-dynimport.middlewares: test-buffer,test-retry
traefik.http.middlewares.test-buffer.buffering.retryExpression: IsNetworkError() && Attempts() < 4
healthcheck:
interval: 2s
timeout: 5s
retries: 5
start_period: 60s
test: wget --no-verbose --tries=1 --spider http://127.0.0.1:3000/livez || exit 1
authorization-service:
build:
dockerfile: ${GITHUB_WORKSPACE:-}/ee/apps/Dockerfile
context: out/authorization-service
target: release-standard
x-bake:
platforms:
- linux/amd64
- linux/arm64
args:
SERVICE: authorization-service
image: ghcr.io/${LOWERCASE_REPOSITORY}/authorization-service:${DOCKER_TAG}
environment:
- MONGO_URL=mongodb://mongo:27017/rocketchat?replicaSet=rs0
- 'TRANSPORTER=${TRANSPORTER:-}'
- MOLECULER_LOG_LEVEL=info
extra_hosts:
- 'host.docker.internal:host-gateway'
depends_on:
- nats
account-service:
build:
dockerfile: ${GITHUB_WORKSPACE:-}/ee/apps/Dockerfile
context: out/account-service
target: release-standard
x-bake:
platforms:
- linux/amd64
- linux/arm64
args:
SERVICE: account-service
image: ghcr.io/${LOWERCASE_REPOSITORY}/account-service:${DOCKER_TAG}
environment:
- MONGO_URL=mongodb://mongo:27017/rocketchat?replicaSet=rs0
- 'TRANSPORTER=${TRANSPORTER:-}'
- MOLECULER_LOG_LEVEL=info
extra_hosts:
- 'host.docker.internal:host-gateway'
depends_on:
- nats
presence-service:
build:
dockerfile: ${GITHUB_WORKSPACE:-}/ee/apps/Dockerfile
context: out/presence-service
target: release-standard
x-bake:
platforms:
- linux/amd64
- linux/arm64
args:
SERVICE: presence-service
image: ghcr.io/${LOWERCASE_REPOSITORY}/presence-service:${DOCKER_TAG}
environment:
- MONGO_URL=mongodb://mongo:27017/rocketchat?replicaSet=rs0
- 'TRANSPORTER=${TRANSPORTER:-}'
- MOLECULER_LOG_LEVEL=info
extra_hosts:
- 'host.docker.internal:host-gateway'
depends_on:
- nats
ddp-streamer-service:
build:
dockerfile: ${GITHUB_WORKSPACE:-}/ee/apps/Dockerfile
context: out/ddp-streamer
target: release-standard
x-bake:
platforms:
- linux/amd64
- linux/arm64
args:
SERVICE: ddp-streamer
image: ghcr.io/${LOWERCASE_REPOSITORY}/ddp-streamer-service:${DOCKER_TAG}
environment:
- MONGO_URL=mongodb://mongo:27017/rocketchat?replicaSet=rs0
- 'TRANSPORTER=${TRANSPORTER:-}'
- MOLECULER_LOG_LEVEL=info
extra_hosts:
- 'host.docker.internal:host-gateway'
depends_on:
- nats
- traefik
labels:
traefik.enable: true
traefik.http.services.ddp-streamer-service.loadbalancer.server.port: 3000
traefik.http.routers.ddp-streamer-service.service: ddp-streamer-service
traefik.http.routers.ddp-streamer-service.rule: PathPrefix(`/websocket`) || PathPrefix(`/sockjs`)
queue-worker-service:
build:
dockerfile: ${GITHUB_WORKSPACE:-}/ee/apps/Dockerfile
context: out/queue-worker
target: release-standard
x-bake:
platforms:
- linux/amd64
- linux/arm64
args:
SERVICE: queue-worker
image: ghcr.io/${LOWERCASE_REPOSITORY}/queue-worker-service:${DOCKER_TAG}
environment:
- MONGO_URL=mongodb://mongo:27017/rocketchat?replicaSet=rs0
- 'TRANSPORTER=${TRANSPORTER:-}'
- MOLECULER_LOG_LEVEL=info
extra_hosts:
- 'host.docker.internal:host-gateway'
depends_on:
- nats
omnichannel-transcript-service:
build:
dockerfile: ${GITHUB_WORKSPACE:-}/ee/apps/Dockerfile
context: out/omnichannel-transcript
target: release-standard
x-bake:
platforms:
- linux/amd64
- linux/arm64
args:
SERVICE: omnichannel-transcript
image: ghcr.io/${LOWERCASE_REPOSITORY}/omnichannel-transcript-service:${DOCKER_TAG}
environment:
- 'TEST_MODE=${TEST_MODE:-true}'
- MONGO_URL=mongodb://mongo:27017/rocketchat?replicaSet=rs0
- 'TRANSPORTER=${TRANSPORTER:-}'
- MOLECULER_LOG_LEVEL=info
extra_hosts:
- 'host.docker.internal:host-gateway'
depends_on:
- nats
nats:
image: nats:2.6-alpine
mongo:
image: mongodb/mongodb-community-server:${MONGODB_VERSION:-8.0}-ubi8
container_name: mongo
restart: on-failure
ports:
- 27017:27017
environment:
MONGODB_REPLICA_SET_NAME: ${MONGODB_REPLICA_SET_NAME:-rs0}
MONGODB_PORT_NUMBER: ${MONGODB_PORT_NUMBER:-27017}
MONGODB_INITIAL_PRIMARY_HOST: ${MONGODB_INITIAL_PRIMARY_HOST:-mongo}
entrypoint: |
bash -c
"mongod --replSet $$MONGODB_REPLICA_SET_NAME --bind_ip_all &
sleep 2;
until mongosh --eval \"db.adminCommand('ping')\"; do
echo '=====> Waiting for Mongo...';
sleep 1;
done;
echo \"=====> Initiating ReplSet $$MONGODB_REPLICA_SET_NAME at $$MONGODB_INITIAL_PRIMARY_HOST:$$MONGODB_PORT_NUMBER...\";
mongosh --eval \"rs.initiate({_id: '$$MONGODB_REPLICA_SET_NAME', members: [{ _id: 0, host: '$$MONGODB_INITIAL_PRIMARY_HOST:$$MONGODB_PORT_NUMBER' }]})\";
echo '=====> Initiating ReplSet done...';
wait"
httpbin:
image: kong/httpbin
mock-server:
image: ghcr.io/rocketchat/mockserver@sha256:aa4de5e0dd07ad4ab8849fbb2c67eedfcc98b27f9ddd6b54809409e6f9e8f53f
profiles:
- api
ports:
- 4000:8080
networks:
default:
# single-label hostnames fail server-fetch SSRF domain validation and message-parser only links TLDs
# from its whitelist (.local/.test/.internal are not in it), so oembed tests reach it through this alias
aliases:
- mock-server.dev
healthcheck:
test: ['CMD', '/mock-server', '-healthcheck']
interval: 2s
timeout: 5s
retries: 5
traefik:
image: traefik:v3.6.6
command:
- --providers.docker=true
ports:
- 3000:80
volumes:
- /var/run/docker.sock:/var/run/docker.sock
openldap:
image: bitnamilegacy/openldap:latest
volumes:
- ./development/ldap:/opt/bitnami/openldap/data/
environment:
- LDAP_ADMIN_USERNAME=admin
- LDAP_ADMIN_PASSWORD=adminpassword
- LDAP_ROOT=dc=space,dc=air
- LDAP_ADMIN_DN=cn=admin,dc=space,dc=air
- LDAP_CUSTOM_LDIF_DIR=/opt/bitnami/openldap/data
- LDAP_LOGLEVEL=-1
- BITNAMI_DEBUG=false
ports:
- 1389:1389
- 1636:1636