##// END OF EJS Templates
fix(elasticsearch): tune options for ES cluster to work properly under docker
super-admin -
Show More
@@ -1,324 +1,327 b''
1 version: '3.9'
1 version: '3.9'
2
2
3 x-logging: &custom-logging
3 x-logging: &custom-logging
4 # docker plugin install grafana/loki-docker-driver:2.7.1 --alias loki --grant-all-permissions
4 # docker plugin install grafana/loki-docker-driver:2.7.1 --alias loki --grant-all-permissions
5 # NOTE: loki logging driver ONLY works for host type networks...
5 # NOTE: loki logging driver ONLY works for host type networks...
6 driver: loki
6 driver: loki
7 options:
7 options:
8 #loki-url: "http://${RC_LOKI_AUTH}loki:3100/loki/api/v1/push"
8 #loki-url: "http://${RC_LOKI_AUTH}loki:3100/loki/api/v1/push"
9 loki-url: "http://${RC_LOKI_AUTH}127.0.0.1:3100/loki/api/v1/push"
9 loki-url: "http://${RC_LOKI_AUTH}127.0.0.1:3100/loki/api/v1/push"
10 loki-retries: "5"
10 loki-retries: "5"
11 loki-timeout: "1s"
11 loki-timeout: "1s"
12 loki-max-backoff: "800ms"
12 loki-max-backoff: "800ms"
13
13
14 volumes:
14 volumes:
15
15
16 # volume for redis data store
16 # volume for redis data store
17 redis_data:
17 redis_data:
18 labels:
18 labels:
19 "keep": 1
19 "keep": 1
20
20
21 # volume for Postgres db store
21 # volume for Postgres db store
22
22
23 # volume for Postgres Data
23 # volume for Postgres Data
24 pg_data:
24 pg_data:
25 labels:
25 labels:
26 "keep": 1
26 "keep": 1
27
27
28 # volume for rhodecode elasticsearch
28 # volume for rhodecode elasticsearch
29 es_data:
29 es_data:
30 labels:
30 labels:
31 "keep": 1
31 "keep": 1
32
32
33 services:
33 services:
34
34
35 channelstream:
35 channelstream:
36 networks:
36 networks:
37 - rhodecode_network
37 - rhodecode_network
38 image: channelstream/channelstream:0.7.1
38 image: channelstream/channelstream:0.7.1
39
39
40 restart: always
40 restart: always
41
41
42 # ports:
42 # ports:
43 # - "127.0.0.1:8000:8000"
43 # - "127.0.0.1:8000:8000"
44 env_file:
44 env_file:
45 - ${RC_ENV_FILE:?must-specify-rc-env-file}
45 - ${RC_ENV_FILE:?must-specify-rc-env-file}
46 command: ["channelstream"]
46 command: ["channelstream"]
47
47
48 healthcheck:
48 healthcheck:
49 test: curl -A RhodeCode-Healthcheck -s -o /dev/null -w '%{http_code}' http://channelstream:8000/admin/sign_in
49 test: curl -A RhodeCode-Healthcheck -s -o /dev/null -w '%{http_code}' http://channelstream:8000/admin/sign_in
50 timeout: 30s
50 timeout: 30s
51 start_period: 5s
51 start_period: 5s
52 interval: 60s
52 interval: 60s
53 retries: 10
53 retries: 10
54
54
55 volumes:
55 volumes:
56 - confvolume:/etc/rhodecode/conf
56 - confvolume:/etc/rhodecode/conf
57
57
58 logging:
58 logging:
59 *custom-logging
59 *custom-logging
60
60
61 labels:
61 labels:
62 - "traefik.enable=true"
62 - "traefik.enable=true"
63 - "traefik.http.routers.channelstream.entrypoints=http"
63 - "traefik.http.routers.channelstream.entrypoints=http"
64 - "traefik.http.routers.channelstream.priority=20"
64 - "traefik.http.routers.channelstream.priority=20"
65 - "traefik.http.routers.channelstream.rule=Host(`${RC_HOSTNAME:?must-specify-rhodecode-hostname}`) && PathPrefix(`/_channelstream`)"
65 - "traefik.http.routers.channelstream.rule=Host(`${RC_HOSTNAME:?must-specify-rhodecode-hostname}`) && PathPrefix(`/_channelstream`)"
66 - "traefik.http.routers.channelstream.service=channelstream-web"
66 - "traefik.http.routers.channelstream.service=channelstream-web"
67 - "traefik.http.routers.channelstream.middlewares=strip-cs"
67 - "traefik.http.routers.channelstream.middlewares=strip-cs"
68 - "traefik.http.middlewares.strip-cs.stripprefix.prefixes=/_channelstream"
68 - "traefik.http.middlewares.strip-cs.stripprefix.prefixes=/_channelstream"
69 - "traefik.http.services.channelstream-web.loadbalancer.server.port=8000"
69 - "traefik.http.services.channelstream-web.loadbalancer.server.port=8000"
70 # HTTP + SSL example, should be put into .custom/docker-compose-services.override.yaml
70 # HTTP + SSL example, should be put into .custom/docker-compose-services.override.yaml
71 #- "traefik.http.routers.channelstream.entrypoints=http,https"
71 #- "traefik.http.routers.channelstream.entrypoints=http,https"
72
72
73 profiles:
73 profiles:
74 ["channelstream"]
74 ["channelstream"]
75
75
76 nginx-statics:
76 nginx-statics:
77
77
78 # used to serve static files
78 # used to serve static files
79 networks:
79 networks:
80 - rhodecode_network
80 - rhodecode_network
81 image: library/nginx:1.25.3
81 image: library/nginx:1.25.3
82
82
83 restart: always
83 restart: always
84
84
85 environment:
85 environment:
86 NGINX_ENTRYPOINT_QUIET_LOGS: 1
86 NGINX_ENTRYPOINT_QUIET_LOGS: 1
87 env_file:
87 env_file:
88 - ${RC_ENV_FILE:?must-specify-rc-env-file}
88 - ${RC_ENV_FILE:?must-specify-rc-env-file}
89
89
90 healthcheck:
90 healthcheck:
91 test: curl -A RhodeCode-Healthcheck -s -o /dev/null -w '%{http_code}' --fail http://127.0.0.1:80/_health_static
91 test: curl -A RhodeCode-Healthcheck -s -o /dev/null -w '%{http_code}' --fail http://127.0.0.1:80/_health_static
92 timeout: 30s
92 timeout: 30s
93 start_period: 5s
93 start_period: 5s
94 interval: 60s
94 interval: 60s
95 retries: 10
95 retries: 10
96
96
97 # depends_on:
97 # depends_on:
98 # - channelstream
98 # - channelstream
99
99
100 volumes:
100 volumes:
101 - ./config/nginx/nginx_statics.conf:/etc/nginx/nginx.conf:ro
101 - ./config/nginx/nginx_statics.conf:/etc/nginx/nginx.conf:ro
102 - ./.custom/static_files:/var/opt/rhodecode_static_data
102 - ./.custom/static_files:/var/opt/rhodecode_static_data
103 - rc_datavolume:/var/opt/rhodecode_data
103 - rc_datavolume:/var/opt/rhodecode_data
104
104
105 logging:
105 logging:
106 *custom-logging
106 *custom-logging
107
107
108 labels:
108 labels:
109 - "traefik.enable=true"
109 - "traefik.enable=true"
110 - "traefik.http.routers.nginx.entrypoints=http"
110 - "traefik.http.routers.nginx.entrypoints=http"
111 - "traefik.http.routers.nginx.priority=40"
111 - "traefik.http.routers.nginx.priority=40"
112 - "traefik.http.routers.nginx.rule=Host(`${RC_HOSTNAME:?must-specify-rhodecode-hostname}`) && PathPrefix(`/_static/rhodecode`, `/_pages`)"
112 - "traefik.http.routers.nginx.rule=Host(`${RC_HOSTNAME:?must-specify-rhodecode-hostname}`) && PathPrefix(`/_static/rhodecode`, `/_pages`)"
113 - "traefik.http.routers.nginx.service=nginx-serv"
113 - "traefik.http.routers.nginx.service=nginx-serv"
114 - "traefik.http.services.nginx-serv.loadbalancer.server.port=80"
114 - "traefik.http.services.nginx-serv.loadbalancer.server.port=80"
115
115
116 # HTTP + SSL example, should be put into .custom/docker-compose-services.override.yaml
116 # HTTP + SSL example, should be put into .custom/docker-compose-services.override.yaml
117 #- "traefik.http.routers.error-router.entrypoints=http, https"
117 #- "traefik.http.routers.error-router.entrypoints=http, https"
118
118
119 nginx-errors:
119 nginx-errors:
120 networks:
120 networks:
121 - rhodecode_network
121 - rhodecode_network
122 image: library/nginx:1.25.3
122 image: library/nginx:1.25.3
123
123
124 restart: always
124 restart: always
125
125
126 environment:
126 environment:
127 NGINX_ENTRYPOINT_QUIET_LOGS: 1
127 NGINX_ENTRYPOINT_QUIET_LOGS: 1
128
128
129 env_file:
129 env_file:
130 - ${RC_ENV_FILE:?must-specify-rc-env-file}
130 - ${RC_ENV_FILE:?must-specify-rc-env-file}
131
131
132 volumes:
132 volumes:
133 - ./config/nginx/nginx_errors.conf:/etc/nginx/nginx.conf:ro
133 - ./config/nginx/nginx_errors.conf:/etc/nginx/nginx.conf:ro
134 - ./config/nginx/error_pages:/etc/nginx/error_pages
134 - ./config/nginx/error_pages:/etc/nginx/error_pages
135
135
136 - rc_datavolume:/var/opt/rhodecode_data
136 - rc_datavolume:/var/opt/rhodecode_data
137
137
138 labels:
138 labels:
139 - "traefik.enable=true"
139 - "traefik.enable=true"
140
140
141 # error-middleware
141 # error-middleware
142 - "traefik.http.middlewares.error-pages-middleware.errors.status=404"
142 - "traefik.http.middlewares.error-pages-middleware.errors.status=404"
143 - "traefik.http.middlewares.error-pages-middleware.errors.service=error-pages-service"
143 - "traefik.http.middlewares.error-pages-middleware.errors.service=error-pages-service"
144 - "traefik.http.middlewares.error-pages-middleware.errors.query=/{status}.html"
144 - "traefik.http.middlewares.error-pages-middleware.errors.query=/{status}.html"
145
145
146 # error handling router
146 # error handling router
147 - "traefik.http.routers.error-router.entrypoints=http"
147 - "traefik.http.routers.error-router.entrypoints=http"
148 - "traefik.http.routers.error-router.priority=5"
148 - "traefik.http.routers.error-router.priority=5"
149 - "traefik.http.routers.error-router.rule=HostRegexp(`{host:.+}`)"
149 - "traefik.http.routers.error-router.rule=HostRegexp(`{host:.+}`)"
150 - "traefik.http.routers.error-router.service=error-pages-service"
150 - "traefik.http.routers.error-router.service=error-pages-service"
151 - "traefik.http.routers.error-router.middlewares=error-pages-middleware"
151 - "traefik.http.routers.error-router.middlewares=error-pages-middleware"
152
152
153 - "traefik.http.services.error-pages-service.loadbalancer.server.port=80"
153 - "traefik.http.services.error-pages-service.loadbalancer.server.port=80"
154
154
155 # HTTP + SSL example, should be put into .custom/docker-compose-services.override.yaml
155 # HTTP + SSL example, should be put into .custom/docker-compose-services.override.yaml
156 #- "traefik.http.routers.error-router.entrypoints=http, https"
156 #- "traefik.http.routers.error-router.entrypoints=http, https"
157
157
158 elasticsearch:
158 elasticsearch:
159 networks:
159 networks:
160 - rhodecode_network
160 - rhodecode_network
161 image: elasticsearch:6.8.23
161 image: elasticsearch:6.8.23
162 restart: always
162 restart: always
163 environment:
163 environment:
164 - cluster.name=elasticsearch-cluster
164 - cluster.name=elasticsearch-cluster
165 - network.host=0.0.0.0
165 - network.host=0.0.0.0
166 - bootstrap.memory_lock=true
166 - bootstrap.memory_lock=true
167 - discovery.type=single-node
167 - discovery.type=single-node
168 - cluster.routing.allocation.disk.threshold_enabled=false
169 - cluster.name=rhodecode-elasticsearch
170 - xpack.security.enabled=false
168 - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
171 - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
169 env_file:
172 env_file:
170 - ${RC_ENV_FILE:?must-specify-rc-env-file}
173 - ${RC_ENV_FILE:?must-specify-rc-env-file}
171 healthcheck:
174 healthcheck:
172 # change port 80 to 443 when only using SSL
175 # change port 80 to 443 when only using SSL
173 test: [ "CMD", "curl", "-A", "RhodeCode-Healthcheck", "-s", "-o", "/dev/null", "-w", "'%{http_code}'", "elasticsearch:9200/_cat/health" ]
176 test: [ "CMD", "curl", "-A", "RhodeCode-Healthcheck", "-s", "-o", "/dev/null", "-w", "'%{http_code}'", "elasticsearch:9200/_cat/health" ]
174 timeout: 30s
177 timeout: 30s
175 interval: 60s
178 interval: 60s
176 retries: 10
179 retries: 10
177
180
178 # compat problems within some systems on settings those
181 # compat problems within some systems on settings those
179 #ulimits:
182 #ulimits:
180 #memlock:
183 #memlock:
181 #soft: -1
184 #soft: -1
182 #hard: -1
185 #hard: -1
183
186
184 volumes:
187 volumes:
185 - es_data:/usr/share/elasticsearch/data
188 - es_data:/usr/share/elasticsearch/data
186
189
187 logging:
190 logging:
188 *custom-logging
191 *custom-logging
189
192
190 profiles:
193 profiles:
191 ["elasticsearch"]
194 ["elasticsearch"]
192
195
193 redis:
196 redis:
194 networks:
197 networks:
195 - rhodecode_network
198 - rhodecode_network
196 image: library/redis:7.0.14
199 image: library/redis:7.0.14
197
200
198 restart: always
201 restart: always
199 env_file:
202 env_file:
200 - ${RC_ENV_FILE:?must-specify-rc-env-file}
203 - ${RC_ENV_FILE:?must-specify-rc-env-file}
201 command:
204 command:
202 - "redis-server"
205 - "redis-server"
203 - "/etc/redis/redis.conf"
206 - "/etc/redis/redis.conf"
204 - "--maxmemory-policy allkeys-lru"
207 - "--maxmemory-policy allkeys-lru"
205 - "--maxmemory ${RC_REDIS_MAXMEMORY:?must-specify-redis-maxmemory}"
208 - "--maxmemory ${RC_REDIS_MAXMEMORY:?must-specify-redis-maxmemory}"
206
209
207 # ports:
210 # ports:
208 # - "127.0.0.1::6379"
211 # - "127.0.0.1::6379"
209
212
210 healthcheck:
213 healthcheck:
211 test: [ "CMD", "redis-cli", "--raw", "incr", "ping" ]
214 test: [ "CMD", "redis-cli", "--raw", "incr", "ping" ]
212 interval: 60s
215 interval: 60s
213
216
214 volumes:
217 volumes:
215 - ./config/redis/redis.conf:/etc/redis/redis.conf:ro
218 - ./config/redis/redis.conf:/etc/redis/redis.conf:ro
216
219
217 - redis_data:/data
220 - redis_data:/data
218
221
219 profiles:
222 profiles:
220 ["redis"]
223 ["redis"]
221
224
222 logging:
225 logging:
223 *custom-logging
226 *custom-logging
224
227
225 database:
228 database:
226 networks:
229 networks:
227 - rhodecode_network
230 - rhodecode_network
228 image: library/postgres:14.9
231 image: library/postgres:14.9
229
232
230 environment:
233 environment:
231 POSTGRES_DB: ${DB_NAME:?must-specify-db-name}
234 POSTGRES_DB: ${DB_NAME:?must-specify-db-name}
232 POSTGRES_USER: ${DB_USER:?must-specify-db-user}
235 POSTGRES_USER: ${DB_USER:?must-specify-db-user}
233 PGUSER: ${DB_USER:?must-specify-db-user}
236 PGUSER: ${DB_USER:?must-specify-db-user}
234 POSTGRES_PASSWORD: ${DB_PASSWORD:?must-specify-db-password}
237 POSTGRES_PASSWORD: ${DB_PASSWORD:?must-specify-db-password}
235 POSTGRES_HOST_AUTH_METHOD: md5
238 POSTGRES_HOST_AUTH_METHOD: md5
236 POSTGRES_INITDB_ARGS: "--auth-host=md5 --auth-local=md5"
239 POSTGRES_INITDB_ARGS: "--auth-host=md5 --auth-local=md5"
237 env_file:
240 env_file:
238 - ${RC_ENV_FILE:?must-specify-rc-env-file}
241 - ${RC_ENV_FILE:?must-specify-rc-env-file}
239
242
240 restart: always
243 restart: always
241 command:
244 command:
242 - "postgres"
245 - "postgres"
243 - "-c"
246 - "-c"
244 - "log_statement=ddl"
247 - "log_statement=ddl"
245 - "-c"
248 - "-c"
246 - "config_file=/etc/conf.d/pg_customized.conf"
249 - "config_file=/etc/conf.d/pg_customized.conf"
247
250
248 # ports:
251 # ports:
249 # - "127.0.0.1::5432"
252 # - "127.0.0.1::5432"
250
253
251 healthcheck:
254 healthcheck:
252 test: ["CMD-SHELL", "pg_isready", '-U', "$DB_USER"]
255 test: ["CMD-SHELL", "pg_isready", '-U', "$DB_USER"]
253 interval: 10s
256 interval: 10s
254 timeout: 5s
257 timeout: 5s
255 retries: 5
258 retries: 5
256
259
257 volumes:
260 volumes:
258 - $PWD/config/database/pg_customized.conf:/etc/conf.d/pg_customized.conf:ro
261 - $PWD/config/database/pg_customized.conf:/etc/conf.d/pg_customized.conf:ro
259 # db dumps reverse mount
262 # db dumps reverse mount
260 - $PWD/.custom/db_dump:/var/rc-data-dump
263 - $PWD/.custom/db_dump:/var/rc-data-dump
261 # save the pg_data volume
264 # save the pg_data volume
262 - pg_data:/var/lib/postgresql/data
265 - pg_data:/var/lib/postgresql/data
263
266
264
267
265 profiles:
268 profiles:
266 ["postgres", "database"]
269 ["postgres", "database"]
267
270
268 logging:
271 logging:
269 *custom-logging
272 *custom-logging
270
273
271 database-mysql:
274 database-mysql:
272 networks:
275 networks:
273 - rhodecode_network
276 - rhodecode_network
274 image: library/mysql:8.0.35
277 image: library/mysql:8.0.35
275
278
276 environment:
279 environment:
277 MYSQL_DATABASE: ${DB_NAME:?must-specify-db-name}
280 MYSQL_DATABASE: ${DB_NAME:?must-specify-db-name}
278 MYSQL_USER: ${DB_USER:?must-specify-db-user}
281 MYSQL_USER: ${DB_USER:?must-specify-db-user}
279 MYSQL_PASSWORD: ${DB_PASSWORD:?must-specify-db-password}
282 MYSQL_PASSWORD: ${DB_PASSWORD:?must-specify-db-password}
280 MYSQL_ROOT_PASSWORD: ${DB_PASSWORD:?must-specify-db-password}
283 MYSQL_ROOT_PASSWORD: ${DB_PASSWORD:?must-specify-db-password}
281 env_file:
284 env_file:
282 - ${RC_ENV_FILE:?must-specify-rc-env-file}
285 - ${RC_ENV_FILE:?must-specify-rc-env-file}
283
286
284 restart: always
287 restart: always
285
288
286 # ports:
289 # ports:
287 # - "127.0.0.1::3306"
290 # - "127.0.0.1::3306"
288
291
289 volumes:
292 volumes:
290 - ./config/database/mysql_customized.conf:/etc/mysql/conf.d/config-file.cnf:ro
293 - ./config/database/mysql_customized.conf:/etc/mysql/conf.d/config-file.cnf:ro
291 # save the mysql_data volume
294 # save the mysql_data volume
292 - $PWD/mysql_dir:/var/lib/mysql
295 - $PWD/mysql_dir:/var/lib/mysql
293
296
294 profiles:
297 profiles:
295 ["mysql"]
298 ["mysql"]
296
299
297 logging:
300 logging:
298 *custom-logging
301 *custom-logging
299
302
300 # DEBUG/DEVEL
303 # DEBUG/DEVEL
301 httpbin:
304 httpbin:
302 networks:
305 networks:
303 - rhodecode_network
306 - rhodecode_network
304 image: kennethreitz/httpbin:latest
307 image: kennethreitz/httpbin:latest
305 ports:
308 ports:
306 # expose on 9090 to not block 80 for traefik
309 # expose on 9090 to not block 80 for traefik
307 - "9090:80"
310 - "9090:80"
308 profiles:
311 profiles:
309 ["testing"]
312 ["testing"]
310
313
311 restart: always
314 restart: always
312
315
313 ldap-server:
316 ldap-server:
314 networks:
317 networks:
315 - rhodecode_network
318 - rhodecode_network
316 image: rroemhild/test-openldap:latest
319 image: rroemhild/test-openldap:latest
317 ports:
320 ports:
318 # expose on 10389 (ldap) 10636 (ldaps)
321 # expose on 10389 (ldap) 10636 (ldaps)
319 - "10389:10389"
322 - "10389:10389"
320 - "10636:10636"
323 - "10636:10636"
321 profiles:
324 profiles:
322 ["testing"]
325 ["testing"]
323
326
324 restart: always No newline at end of file
327 restart: always
General Comments 0
You need to be logged in to leave comments. Login now