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