##// END OF EJS Templates
stack: enable auth for loki as it needs public exposure...
super-admin -
Show More
@@ -0,0 +1,5 b''
1 # basic auth for traefik middleware.
2 # format here is <user>:<bcrypt_password>
3 # to generate bcrypt password one can use
4 # curl --verbose --request POST --data "password=XlokiAuth101&cost=10" https://www.toptal.com/developers/bcrypt/api/generate-hash.json
5 loki-auth:$2b$10$U8Cui8cO9ZXehYV.7atv8uPuA6rBVrA.Mxzvt8EsdheztkyXZagv6
@@ -1,42 +1,45 b''
1 1 ## Static configuration, needs traefik reload
2 2
3 3 entryPoints:
4 4 http:
5 5 address: ":80"
6 6
7 7 https:
8 8 address: ":443"
9 9
10 10 ssh:
11 11 address: ":${RC_SSH_PORT:?must-specify-ssh-port}"
12 12
13 loki:
14 address: ":3100"
15
13 16 traefik:
14 17 address: ":7000"
15 18
16 19 api:
17 20 dashboard: false
18 21 insecure: false # change to true to expose dashboard
19 22
20 23 accessLog: {}
21 24
22 25 log:
23 26 # DEBUG / INFO
24 27 level: INFO
25 28
26 29 metrics:
27 30 prometheus: {}
28 31
29 32
30 33 providers:
31 34 docker:
32 35 exposedByDefault: false
33 36 swarmMode: false
34 37
35 38 file:
36 39 filename: "/etc/traefik/traefik_dynamic.yaml"
37 40 watch: true
38 41
39 42
40 43 serversTransport:
41 44 #this disables SSL certificate verification for legacy own cert services like NextCloud etc
42 45 insecureSkipVerify: true
@@ -1,24 +1,28 b''
1 1
2 2 ## Setting up the middleware for redirect to https ##
3 3 http:
4 4
5 5 middlewares:
6 6
7 7 https-redirect:
8 8 redirectScheme:
9 9 scheme: https
10 10 # permanent: true
11 11
12 12 middlewares-rate-limit:
13 13 rateLimit:
14 14 average: 100
15 15 burst: 50
16 16
17 basic-auth:
18 basicAuth:
19 usersfile: /etc/traefik/.htpasswd
20
17 21 # Dynamic configuration for standard file based SSL cert
18 22 # create a custom copy of the traefik into .custom/ and remount this
19 23 # to enable custom certificates
20 24 #tls:
21 25 # certificates:
22 26 # # first certificate
23 27 # - certFile: /etc/traefik/certs/rhodecode-com.cert
24 28 # keyFile: /etc/traefik/certs/rhodecode-com.key
@@ -1,336 +1,336 b''
1 1 version: '3.9'
2 2
3 3 x-logging: &custom-logging
4 4 # docker plugin install grafana/loki-docker-driver:2.7.1 --alias loki --grant-all-permissions
5 5 # NOTE: loki logging driver ONLY works for host type networks...
6 6 driver: loki
7 7 options:
8 #loki-url: "http://loki:3100/loki/api/v1/push"
9 loki-url: "http://127.0.0.1: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"
10 10 loki-retries: "5"
11 11 loki-timeout: "1s"
12 12 loki-max-backoff: "800ms"
13 13
14 14
15 15 services:
16 16
17 17 rhodecode:
18 18 networks:
19 19 - rhodecode_network
20 20 extra_hosts:
21 21 - "host.docker.internal:host-gateway"
22 22 image: rhodecode/rhodecode-${RC_EDITION}:${RC_VERSION:-4.28.0}
23 23 stdin_open: true
24 24 tty: true
25 25 restart: always
26 26 env_file:
27 27 - ${RC_ENV_FILE:?must-specify-rc-env-file}
28 28 command: [
29 29 "/usr/local/bin/rhodecode_bin/bin/gunicorn",
30 30 "--name=gunicorn-rhodecode-1",
31 31 "--error-logfile=-",
32 32 "--paster=/etc/rhodecode/conf/rhodecode.ini",
33 33 "--config=/etc/rhodecode/conf/gunicorn_conf_rc.py"
34 34 ]
35 35 deploy:
36 36 # override this in .custom/docker-compose-apps.override.yaml to scale up
37 37 replicas: 1
38 38
39 39 # ports:
40 40 # - "127.0.0.1::10020"
41 41
42 42 build:
43 43 context: .
44 44 dockerfile: service/rhodecode/rhodecode.dockerfile
45 45 args:
46 46 TZ: ${TZ}
47 47 RHODECODE_VERSION: ${RC_VERSION:-4.28.0}
48 48 RHODECODE_DB: postgresql://rhodecode:${DB_PASSWORD:?must-specify-db-password}@database/${DB_NAME:?must-specify-db-name}
49 49 RHODECODE_USER_NAME: ${RHODECODE_USER_NAME}
50 50 RHODECODE_USER_PASS: ${RHODECODE_USER_PASS}
51 51 RHODECODE_USER_EMAIL: ${RHODECODE_USER_EMAIL}
52 52
53 53 environment:
54 54 RC_APP_TYPE: rhodecode_http
55 55 RC_APP_PROC: 1
56 56 SSL_CERT_FILE: "/etc/rhodecode/conf/ca-bundle.crt"
57 57 REQUESTS_CA_BUNDLE: "/etc/rhodecode/conf/ca-bundle.crt"
58 58 GIT_SSL_CAINFO: "/etc/rhodecode/conf/ca-bundle.crt"
59 59 GEVENT_RESOLVER: "ares"
60 60
61 61 DB_UPGRADE: 1 # run the DB upgrade
62 62 SETUP_APP: 1 # run the application default settings setup, can be turned off after initial run
63 63 #FORCE_DB_INIT_FILE: 1 # force the database init, warning: destroys old DB
64 64 #FORCE_RC_SETUP_APP: 1 # force running setup scripts for configuration/license application
65 65 MAIN_INI_PATH: /etc/rhodecode/conf/rhodecode.ini
66 66
67 67 # SVN Specific
68 68 MOD_DAV_SVN_PORT: 8090
69 69 APACHE_LOG_DIR: /var/log/rhodecode/svn
70 70 MOD_DAV_SVN_CONF_FILE: /etc/rhodecode/conf/svn/mod_dav_svn.conf
71 71
72 72 healthcheck:
73 73 test: [ "CMD", "curl", "-A", "RhodeCode-Healthcheck", "-s", "-o", "/dev/null", "-w", "'%{http_code}'", "http://127.0.0.1:10020/_admin/ops/ping" ]
74 74 timeout: 30s
75 75 interval: 60s
76 76 retries: 10
77 77
78 78 # depends_on:
79 79 # - database
80 80 # - redis
81 81 # - channelstream
82 82
83 83 volumes:
84 84 - confvolume:/etc/rhodecode/conf
85 85 - logvolume:/var/log/rhodecode
86 86 - rc_reposvolume:/var/opt/rhodecode_repo_store
87 87 - rc_datavolume:/var/opt/rhodecode_data
88 88
89 89 tmpfs:
90 90 - /data_ramdisk:size=${RC_DATA_RAMDISK_SIZE:?specify-RC_DATA_RAMDISK_SIZE-env-var}
91 91
92 92 logging:
93 93 *custom-logging
94 94
95 95 labels:
96 96 - "traefik.enable=true"
97 97 - "traefik.http.routers.rhodecode.entrypoints=http"
98 98 - "traefik.http.routers.rhodecode.rule=Host(`${RC_HOSTNAME:?must-specify-rhodecode-hostname}`)"
99 99 - "traefik.http.routers.rhodecode.service=rhodecode-web"
100 100 - "traefik.http.services.rhodecode-web.loadbalancer.server.port=10020"
101 101 # SSL + proxy prefix example, should be put into .custom/docker-compose-apps.override.yaml
102 102 #- "traefik.http.routers.rhodecode-rt.entrypoints=https"
103 103 #- "traefik.http.routers.rhodecode-rt.rule=Host(`${RC_HOSTNAME:?must-specify-rhodecode-hostname}`)"
104 104 #- "traefik.http.routers.rhodecode-rt.tls=true"
105 105 #- "traefik.http.routers.rhodecode-rt.service=rhodecode-ssl"
106 106 #- "traefik.http.services.rhodecode-ssl.loadbalancer.server.port=10020"
107 107
108 108 vcsserver:
109 109 networks:
110 110 - rhodecode_network
111 111 extra_hosts:
112 112 - "host.docker.internal:host-gateway"
113 113 image: rhodecode/rhodecode-${RC_EDITION}:${RC_VERSION:-4.28.0}
114 114
115 115 stdin_open: true
116 116 tty: true
117 117 restart: always
118 118 env_file:
119 119 - ${RC_ENV_FILE:?must-specify-rc-env-file}
120 120 command: [
121 121 "/home/rhodecode/.rccontrol/vcsserver-1/profile/bin/gunicorn",
122 122 "--name=gunicorn-vcsserver-1",
123 123 "--error-logfile=-",
124 124 "--paster=/etc/rhodecode/conf/vcsserver.ini",
125 125 "--config=/etc/rhodecode/conf/gunicorn_conf_vcs.py"
126 126 ]
127 127 deploy:
128 128 # override this in .custom/docker-compose-apps.override.yaml to scale up
129 129 replicas: 1
130 130
131 131 # ports:
132 132 # - "127.0.0.1::10010"
133 133
134 134 healthcheck:
135 135 test: [ "CMD", "curl", "-A", "RhodeCode-Healthcheck", "-s", "-o", "/dev/null", "-w", "'%{http_code}'", "http://127.0.0.1:10010/status" ]
136 136 timeout: 30s
137 137 interval: 60s
138 138 retries: 10
139 139
140 140 environment:
141 141 RC_APP_TYPE: rhodecode_vcsserver
142 142 RC_APP_PROC: 1
143 143 MAIN_INI_PATH: /etc/rhodecode/conf/vcsserver.ini
144 144 SSL_CERT_FILE: "/etc/rhodecode/conf/ca-bundle.crt"
145 145 REQUESTS_CA_BUNDLE: "/etc/rhodecode/conf/ca-bundle.crt"
146 146 GIT_SSL_CAINFO: "/etc/rhodecode/conf/ca-bundle.crt"
147 147
148 148 # depends_on:
149 149 # - redis
150 150
151 151 volumes:
152 152 - confvolume:/etc/rhodecode/conf
153 153 - logvolume:/var/log/rhodecode
154 154 - rc_reposvolume:/var/opt/rhodecode_repo_store
155 155 - rc_datavolume:/var/opt/rhodecode_data
156 156
157 157 logging:
158 158 *custom-logging
159 159
160 160 celery:
161 161 networks:
162 162 - rhodecode_network
163 163 extra_hosts:
164 164 - "host.docker.internal:host-gateway"
165 165 image: rhodecode/rhodecode-${RC_EDITION}:${RC_VERSION:-4.28.0}
166 166
167 167 stdin_open: true
168 168 tty: true
169 169 restart: always
170 170 env_file:
171 171 - ${RC_ENV_FILE:?must-specify-rc-env-file}
172 172 command: [
173 173 "/usr/local/bin/rhodecode_bin/bin/celery",
174 174 "worker",
175 175 "--task-events",
176 176 "--autoscale=10,2",
177 177 "--no-color",
178 178 "--app=rhodecode.lib.celerylib.loader",
179 179 "--loglevel=DEBUG",
180 180 "--ini=/etc/rhodecode/conf/rhodecode.ini"
181 181 ]
182 182
183 183 environment:
184 184 RC_APP_TYPE: rhodecode_celery
185 185 RC_APP_PROC: 1
186 186 MAIN_INI_PATH: /etc/rhodecode/conf/rhodecode.ini
187 187 SSL_CERT_FILE: "/etc/rhodecode/conf/ca-bundle.crt"
188 188 REQUESTS_CA_BUNDLE: "/etc/rhodecode/conf/ca-bundle.crt"
189 189 GIT_SSL_CAINFO: "/etc/rhodecode/conf/ca-bundle.crt"
190 190
191 191 # depends_on:
192 192 # - database
193 193 # - redis
194 194
195 195 volumes:
196 196 - confvolume:/etc/rhodecode/conf
197 197 - logvolume:/var/log/rhodecode
198 198 - rc_reposvolume:/var/opt/rhodecode_repo_store
199 199 - rc_datavolume:/var/opt/rhodecode_data
200 200
201 201 logging:
202 202 *custom-logging
203 203
204 204 labels:
205 205 - "traefik.enable=false"
206 206
207 207 celery-beat:
208 208 # This service is not scalable
209 209 networks:
210 210 - rhodecode_network
211 211 extra_hosts:
212 212 - "host.docker.internal:host-gateway"
213 213 image: rhodecode/rhodecode-${RC_EDITION}:${RC_VERSION:-4.28.0}
214 214
215 215 stdin_open: true
216 216 tty: true
217 217 restart: always
218 218 env_file:
219 219 - ${RC_ENV_FILE:?must-specify-rc-env-file}
220 220 command: [
221 221 "/usr/local/bin/rhodecode_bin/bin/celery",
222 222 "beat",
223 223 "--no-color",
224 224 "--app=rhodecode.lib.celerylib.loader",
225 225 "--scheduler=rhodecode.lib.celerylib.scheduler.RcScheduler",
226 226 "--loglevel=DEBUG",
227 227 "--ini=/etc/rhodecode/conf/rhodecode.ini"
228 228 ]
229 229
230 230 environment:
231 231 RC_APP_TYPE: rhodecode_beat
232 232 RC_APP_PROC: 1
233 233 MAIN_INI_PATH: /etc/rhodecode/conf/rhodecode.ini
234 234 SSL_CERT_FILE: "/etc/rhodecode/conf/ca-bundle.crt"
235 235 REQUESTS_CA_BUNDLE: "/etc/rhodecode/conf/ca-bundle.crt"
236 236 GIT_SSL_CAINFO: "/etc/rhodecode/conf/ca-bundle.crt"
237 237
238 238 # depends_on:
239 239 # - database
240 240 # - redis
241 241
242 242 volumes:
243 243 - confvolume:/etc/rhodecode/conf
244 244 - logvolume:/var/log/rhodecode
245 245 - rc_reposvolume:/var/opt/rhodecode_repo_store
246 246 - rc_datavolume:/var/opt/rhodecode_data
247 247
248 248 logging:
249 249 *custom-logging
250 250
251 251 labels:
252 252 - "traefik.enable=false"
253 253
254 254 svn:
255 255 networks:
256 256 - rhodecode_network
257 257 extra_hosts:
258 258 - "host.docker.internal:host-gateway"
259 259 image: rhodecode/rhodecode-${RC_EDITION}:${RC_VERSION:-4.28.0}
260 260
261 261 # build:
262 262 # context: .
263 263 # dockerfile: service/svn/rhodecode_svn.dockerfile
264 264 # args:
265 265 # APACHE_VER: 1.3
266 266
267 267 stdin_open: true
268 268 tty: true
269 269 restart: always
270 270 env_file:
271 271 - ${RC_ENV_FILE:?must-specify-rc-env-file}
272 272 command: ["apachectl", "-D", "FOREGROUND"]
273 273
274 274 environment:
275 275 RC_APP_TYPE: rhodecode_svn
276 276
277 277 # SVN Specific
278 278 MOD_DAV_SVN_PORT: 8090
279 279 APACHE_LOG_DIR: /var/log/rhodecode/svn
280 280 MOD_DAV_SVN_CONF_FILE: /etc/rhodecode/conf/svn/mod_dav_svn.conf
281 281
282 282 # ports:
283 283 # - "127.0.0.1::8090"
284 284
285 285 healthcheck:
286 286 test: [ "CMD", "curl", "-A", "RhodeCode-Healthcheck", "-s", "-o", "/dev/null", "-w", "'%{http_code}'", "http://127.0.0.1:8090/_server_status" ]
287 287 timeout: 30s
288 288 interval: 60s
289 289 retries: 10
290 290
291 291 volumes:
292 292 - confvolume:/etc/rhodecode/conf
293 293 - logvolume:/var/log/rhodecode
294 294 - rc_reposvolume:/var/opt/rhodecode_repo_store
295 295 - rc_datavolume:/var/opt/rhodecode_data
296 296
297 297 logging:
298 298 *custom-logging
299 299
300 300 sshd:
301 301 networks:
302 302 - rhodecode_network
303 303 extra_hosts:
304 304 - "host.docker.internal:host-gateway"
305 305 image: rhodecode/rhodecode-${RC_EDITION}:${RC_VERSION:-4.28.0}
306 306
307 307 stdin_open: true
308 308 tty: true
309 309 restart: always
310 310 env_file:
311 311 - ${RC_ENV_FILE:?must-specify-rc-env-file}
312 312 command: ["/usr/sbin/sshd", "-f", "/etc/rhodecode/sshd_config", "-D", "-e"]
313 313
314 314 environment:
315 315 RC_APP_TYPE: rhodecode_sshd
316 316 SSH_BOOTSTRAP: 1
317 317
318 318 # ports:
319 319 # # set from .env file
320 320 # - "${RC_SSH_PORT:?must-specify-ssh-port}:22"
321 321
322 322 volumes:
323 323 - confvolume:/etc/rhodecode/conf
324 324 - logvolume:/var/log/rhodecode
325 325 - rc_reposvolume:/var/opt/rhodecode_repo_store
326 326 - rc_datavolume:/var/opt/rhodecode_data
327 327
328 328 logging:
329 329 *custom-logging
330 330
331 331 labels:
332 332 - "traefik.enable=true"
333 333 - "traefik.http.routers.sshd.entrypoints=ssh"
334 334 - "traefik.http.routers.sshd.rule=Host(`*`)"
335 335 - "traefik.http.routers.sshd.service=rhodecode-ssh"
336 336 - "traefik.http.services.rhodecode-ssh.loadbalancer.server.port=${RC_SSH_PORT:?must-specify-ssh-port}"
@@ -1,55 +1,55 b''
1 1 version: '3.9'
2 2
3 3 ## Shared base stuff for all compose files in stack
4 4
5 5 x-logging: &custom-logging
6 6 # Install loki plugin
7 7 # docker plugin install grafana/loki-docker-driver:2.7.1 --alias loki --grant-all-permissions
8 8 # NOTE: loki logging driver ONLY works for host type networks...
9 9 # To cleanly uninstall the plugin, disable and remove it
10 10 # docker plugin disable loki --force && docker plugin rm loki
11 11 # debug: sudo journalctl -u docker.service | grep loki
12 12 driver: loki
13 13 options:
14 #loki-url: "http://loki:3100/loki/api/v1/push"
15 loki-url: "http://127.0.0.1:3100/loki/api/v1/push"
14 #loki-url: "http://${RC_LOKI_AUTH}loki:3100/loki/api/v1/push"
15 loki-url: "http://${RC_LOKI_AUTH}127.0.0.1:3100/loki/api/v1/push"
16 16 loki-retries: "5"
17 17 loki-timeout: "1s"
18 18 loki-max-backoff: "800ms"
19 19
20 20 volumes:
21 21 # shared logvolume
22 22 logvolume:
23 23 driver: local
24 24 driver_opts:
25 25 type: none
26 26 o: bind
27 27 device: $PWD/logs
28 28
29 29 # bind-mount with configs
30 30 confvolume:
31 31 driver: local
32 32 driver_opts:
33 33 type: none
34 34 o: bind
35 35 device: $PWD/config/_shared
36 36
37 37 # SHARED volume for rhodecode caches, archive caches, nginx static,
38 38 # must be run via: docker volume create --name=rc_datavolume
39 39 rc_datavolume:
40 40 external: true
41 41
42 42 # volume for RhodeCode repo-store, it's where the repositories will be stored
43 43 # must be run via: docker volume create --name=rc_reposvolume
44 44 rc_reposvolume:
45 45 external: true
46 46
47 47 networks:
48 48
49 49 # SHARED network for all containers
50 50 # must be run via: docker network create --name=rhodecode_network
51 51 rhodecode_network:
52 52 name: rhodecode_network
53 53 driver: bridge
54 54 external: true
55 55
@@ -1,131 +1,138 b''
1 1 version: '3.9'
2 2
3 3 volumes:
4 4
5 5 prometheus_data:
6 6 labels:
7 7 "keep": 1
8 8
9 9 grafana_data:
10 10 labels:
11 11 "keep": 1
12 12
13 13 services:
14 14
15 15 statsd-exporter:
16 16 image: prom/statsd-exporter:v0.22.8
17 17 restart: always
18 18 command: [
19 19 '--statsd.mapping-config=/etc/statsd/statsd.yaml',
20 20 '--statsd.listen-udp=:9125',
21 21 '--web.listen-address=:9102'
22 22 ]
23 23 networks:
24 24 - rhodecode_network
25 25 # ports:
26 26 # - "9125:9125/udp"
27 27 # - "9102:9102"
28 28
29 29 volumes:
30 30 - ./config/statsd-exporter:/etc/statsd
31 31 labels:
32 32 - "traefik.enable=false"
33 33 - "traefik.http.services.statsd-exporter.loadbalancer.server.port=9125"
34 34 - "traefik.http.services.statsd-exporter.loadbalancer.server.port=9102"
35 35
36 36 node-exporter:
37 37 image: prom/node-exporter:v1.4.1
38 38 command:
39 39 - "--path.procfs=/host/proc"
40 40 - "--path.rootfs=/rootfs"
41 41 - "--path.sysfs=/host/sys"
42 42 - "--collector.filesystem.mount-points-exclude=^/(sys|proc|dev|host|etc)($$|/)"
43 43 - "--collector.systemd"
44 44 - "--collector.processes"
45 45 networks:
46 46 - rhodecode_network
47 47 pid: host
48 48 restart: always
49 49 # ports:
50 50 # - "9100:9100"
51 51 volumes:
52 52 - "/proc:/host/proc:ro"
53 53 - "/sys:/host/sys:ro"
54 54 - "/:/rootfs:ro"
55 55 labels:
56 56 - "traefik.enable=false"
57 57 - "traefik.http.services.node-exporter.loadbalancer.server.port=9100"
58 58
59 59 prometheus:
60 60 image: prom/prometheus:v2.40.6
61 61 restart: always
62 62 command:
63 63 - "--config.file=/etc/prometheus/prometheus.yml"
64 64 - "--storage.tsdb.path=/prometheus"
65 65 - "--web.console.libraries=/etc/prometheus/console_libraries"
66 66 - "--web.console.templates=/etc/prometheus/consoles"
67 67 - "--storage.tsdb.retention.time=24h"
68 68 - "--web.enable-lifecycle"
69 69 # ports:
70 70 # - "9090:9090"
71 71 networks:
72 72 - rhodecode_network
73 73 volumes:
74 74 - ./config/prometheus:/etc/prometheus
75 75 - prometheus_data:/prometheus
76 76 labels:
77 77 - "traefik.enable=false"
78 78 - "traefik.http.services.prometheus.loadbalancer.server.port=9090"
79 79
80 80 grafana:
81 81 image: grafana/grafana:9.3.1
82 82 restart: always
83 83 # ports:
84 84 # - "3000:3000"
85 85 volumes:
86 86 - grafana_data:/var/lib/grafana
87 87 - ./config/grafana:/etc/grafana
88 88 networks:
89 89 - rhodecode_network
90 90 labels:
91 91 - "traefik.enable=true"
92 92 - "traefik.http.routers.grafana.entrypoints=http"
93 93 - "traefik.http.routers.grafana.rule=PathPrefix(`/_grafana`)"
94 94 - "traefik.http.routers.grafana.service=grafana-http"
95 95 - "traefik.http.services.grafana-http.loadbalancer.server.port=3000"
96 96 # SSL + proxy prefix example, should be put into .custom/docker-compose-metrics.override.yaml
97 97 #- "traefik.http.routers.grafana-rt.entrypoints=https"
98 98 #- "traefik.http.routers.grafana-rt.rule=Host(`metrics.example.com`) && PathPrefix(`/_grafana`)"
99 99 #- "traefik.http.routers.grafana-rt.tls=true"
100 100 #- "traefik.http.routers.grafana-rt.service=grafana-ssl"
101 101 #- "traefik.http.services.grafana-ssl.loadbalancer.server.port=3000"
102 102
103 103 loki:
104 104 image: grafana/loki:2.7.1
105 105 restart: always
106 ports:
107 # Loki port is the only one that needs explicitly
108 # be exposed because of logging driver host-only woking mode
109 - "3100:3100"
106 # ports:
107 # - "3100:3100"
110 108 # - "9095:9095"
111 109 command: [
112 110 "-config.file=/etc/loki/loki-config.yaml"
113 111 ]
114 112 networks:
115 113 - rhodecode_network
116 114 volumes:
117 115 - ./config/loki:/etc/loki
116 # optionally mount host container to scrape docker logs...
117 # - /var/lib/docker/containers:/var/lib/docker/containers:ro
118 labels:
119 # Loki port is the only one that needs explicitly
120 # be exposed because of logging driver host-only working mode
121 - "traefik.enable=true"
122 - "traefik.http.routers.loki.entrypoints=loki"
123 - "traefik.http.routers.loki.rule=PathPrefix(`/`)"
124 - "traefik.http.routers.loki.middlewares=basic-auth@file"
125 - "traefik.http.routers.loki.service=loki-http"
126 - "traefik.http.services.loki-http.loadbalancer.server.port=3100"
118 127
119 128 promtail:
120 129 image: grafana/promtail:2.7.1
121 130 command: [
122 131 "-config.file=/etc/promtail/promtail-config.yaml"
123 132 ]
124 133 networks:
125 134 - rhodecode_network
126 135 volumes:
127 136 - /var/log:/var/log
128 137 - logvolume:/var/log_volume
129 138 - ./config/promtail:/etc/promtail
130 labels:
131 - "traefik.enable=false"
@@ -1,44 +1,46 b''
1 1 version: '3.9'
2 2
3 3 x-logging: &custom-logging
4 4 # docker plugin install grafana/loki-docker-driver:2.7.1 --alias loki --grant-all-permissions
5 5 # NOTE: loki logging driver ONLY works for host type networks...
6 6 driver: loki
7 7 options:
8 #loki-url: "http://loki:3100/loki/api/v1/push"
9 loki-url: "http://127.0.0.1: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"
10 10 loki-retries: "5"
11 11 loki-timeout: "1s"
12 12 loki-max-backoff: "800ms"
13 13
14 14 ## docker network create -d overlay lb-net
15 15 services:
16 16
17 17 traefik:
18 18
19 19 image: traefik:v2.9.6
20 20
21 21 ports:
22 22 # The HTTP port, exposed as http entrypoint
23 23 - "80:80"
24 24 # The HTTPS port, exposed as https entrypoint
25 25 - "443:443"
26 # The loki port, exposed as http entrypoint behind auth
27 - "3100:3100"
26 28 # The SSH port
27 29 - "${RC_SSH_PORT}:${RC_SSH_PORT}"
28 30 volumes:
29 31 # So that Traefik can listen to the Docker events
30 32 - /var/run/docker.sock:/var/run/docker.sock
31 33 - ./config/traefik:/etc/traefik
32 34 deploy:
33 35 placement:
34 36 constraints:
35 37 # limit swarm deploy to MANAGER only
36 38 - node.role == manager
37 39 networks:
38 40 - rhodecode_network
39 41
40 42 labels:
41 43 - "traefik.enable=true"
42 44
43 45 logging:
44 46 *custom-logging
@@ -1,248 +1,248 b''
1 1 version: '3.9'
2 2
3 3 x-logging: &custom-logging
4 4 # docker plugin install grafana/loki-docker-driver:2.7.1 --alias loki --grant-all-permissions
5 5 # NOTE: loki logging driver ONLY works for host type networks...
6 6 driver: loki
7 7 options:
8 #loki-url: "http://loki:3100/loki/api/v1/push"
9 loki-url: "http://127.0.0.1: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"
10 10 loki-retries: "5"
11 11 loki-timeout: "1s"
12 12 loki-max-backoff: "800ms"
13 13
14 14 volumes:
15 15
16 16 # volume for redis data store
17 17 redis_data:
18 18 labels:
19 19 "keep": 1
20 20
21 21 # volume for Postgres db store
22 22
23 23 # volume for Postgres Data
24 24 pg_data:
25 25 labels:
26 26 "keep": 1
27 27
28 28 # volume for rhodecode elasticsearch
29 29 es_data:
30 30 labels:
31 31 "keep": 1
32 32
33 33
34 34 services:
35 35
36 36 channelstream:
37 37 networks:
38 38 - rhodecode_network
39 39 image: channelstream/channelstream:0.7.1
40 40
41 41 restart: always
42 42
43 43 # ports:
44 44 # - "127.0.0.1:9800:9800"
45 45 env_file:
46 46 - ${RC_ENV_FILE:?must-specify-rc-env-file}
47 47 command: ["channelstream"]
48 48
49 49 healthcheck:
50 50 test: [ "CMD", "curl", "-s", "-o", "/dev/null", "-w", "'%{http_code}'", "http://channelstream:8000/admin/sign_in" ]
51 51 timeout: 5s
52 52 interval: 60s
53 53 retries: 10
54 54
55 55 volumes:
56 56 - confvolume:/etc/rhodecode/conf
57 57 - logvolume:/var/log/rhodecode
58 58
59 59 logging:
60 60 *custom-logging
61 61
62 62 labels:
63 63 - "traefik.enable=false"
64 64 #- "traefik.http.routers.channelstream.entrypoints=http"
65 65 #- "traefik.http.services.channelstream.loadbalancer.server.port=9800"
66 66
67 67 profiles:
68 68 ["channelstream"]
69 69
70 70 nginx:
71 71 networks:
72 72 - rhodecode_network
73 73 image: library/nginx:1.23.3
74 74
75 75 restart: always
76 76
77 77 environment:
78 78 NGINX_ENTRYPOINT_QUIET_LOGS: 1
79 79 env_file:
80 80 - ${RC_ENV_FILE:?must-specify-rc-env-file}
81 81
82 82 healthcheck:
83 83 # change port 80 to 443 when only using SSL
84 84 test: [ "CMD", "curl", "-A", "RhodeCode-Healthcheck", "-s", "-o", "/dev/null", "-w", "'%{http_code}'", "http://127.0.0.1:80/_health" ]
85 85 timeout: 30s
86 86 interval: 60s
87 87 retries: 10
88 88
89 89 # depends_on:
90 90 # - channelstream
91 91
92 92 volumes:
93 93 - ./config/nginx/nginx.conf:/etc/nginx/nginx.conf:ro
94 94 - ./config/nginx/http.conf:/etc/nginx/http.conf:ro
95 95 - ./config/nginx/proxy.conf:/etc/nginx/proxy.conf:ro
96 96 - logvolume:/var/log/rhodecode
97 97 - rc_datavolume:/var/opt/rhodecode_data
98 98
99 99 logging:
100 100 *custom-logging
101 101
102 102 labels:
103 103 - "traefik.enable=true"
104 104 - "traefik.http.routers.nginx.entrypoints=http"
105 105 - "traefik.http.routers.nginx.rule=Host(`${RC_HOSTNAME:?must-specify-rhodecode-hostname}`) && ( PathPrefix(`/_health`) || PathPrefix(`/_channelstream`) || PathPrefix(`/_static/rhodecode`) )"
106 106 - "traefik.http.services.nginx.loadbalancer.server.port=80"
107 107
108 108 elasticsearch:
109 109 networks:
110 110 - rhodecode_network
111 111 image: elasticsearch:6.8.23
112 112
113 113 environment:
114 114 - cluster.name=elasticsearch-cluster
115 115 - network.host=0.0.0.0
116 116 - bootstrap.memory_lock=true
117 117 - discovery.type=single-node
118 118 - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
119 119 env_file:
120 120 - ${RC_ENV_FILE:?must-specify-rc-env-file}
121 121 healthcheck:
122 122 # change port 80 to 443 when only using SSL
123 123 test: [ "CMD", "curl", "-A", "RhodeCode-Healthcheck", "-s", "-o", "/dev/null", "-w", "'%{http_code}'", "elasticsearch:9200/_cat/health" ]
124 124 timeout: 30s
125 125 interval: 60s
126 126 retries: 10
127 127
128 128 ulimits:
129 129 memlock:
130 130 soft: -1
131 131 hard: -1
132 132
133 133 volumes:
134 134 - es_data:/usr/share/elasticsearch/data
135 135
136 136 logging:
137 137 *custom-logging
138 138
139 139 profiles:
140 140 ["elasticsearch"]
141 141
142 142 redis:
143 143 networks:
144 144 - rhodecode_network
145 145 image: library/redis:7.0.6
146 146
147 147 restart: always
148 148 env_file:
149 149 - ${RC_ENV_FILE:?must-specify-rc-env-file}
150 150 command:
151 151 - "redis-server"
152 152 - "/etc/redis/redis.conf"
153 153 - "--maxmemory-policy allkeys-lru"
154 154 - "--maxmemory ${RC_REDIS_MAXMEMORY:?must-specify-redis-maxmemory}"
155 155
156 156 # ports:
157 157 # - "127.0.0.1::6379"
158 158
159 159 healthcheck:
160 160 test: [ "CMD", "redis-cli", "--raw", "incr", "ping" ]
161 161 interval: 60s
162 162
163 163 volumes:
164 164 - ./config/redis/redis.conf:/etc/redis/redis.conf:ro
165 165 - logvolume:/var/log/rhodecode
166 166 - redis_data:/data
167 167
168 168 profiles:
169 169 ["redis"]
170 170
171 171 logging:
172 172 *custom-logging
173 173
174 174 database:
175 175 networks:
176 176 - rhodecode_network
177 177 image: library/postgres:14.6
178 178
179 179 environment:
180 180 POSTGRES_DB: ${DB_NAME:?must-specify-db-name}
181 181 POSTGRES_USER: ${DB_USER:?must-specify-db-user}
182 182 PGUSER: ${DB_USER:?must-specify-db-user}
183 183 POSTGRES_PASSWORD: ${DB_PASSWORD:?must-specify-db-password}
184 184 POSTGRES_HOST_AUTH_METHOD: md5
185 185 POSTGRES_INITDB_ARGS: "--auth-host=md5 --auth-local=md5"
186 186 env_file:
187 187 - ${RC_ENV_FILE:?must-specify-rc-env-file}
188 188
189 189 restart: always
190 190 command:
191 191 - "postgres"
192 192 - "-c"
193 193 - "log_statement=ddl"
194 194 - "-c"
195 195 - "config_file=/etc/conf.d/pg_customized.conf"
196 196
197 197 # ports:
198 198 # - "127.0.0.1::5432"
199 199
200 200 healthcheck:
201 201 test: ["CMD-SHELL", "pg_isready", '-U', "$DB_USER"]
202 202 interval: 10s
203 203 timeout: 5s
204 204 retries: 5
205 205
206 206 volumes:
207 207 - $PWD/config/database/pg_customized.conf:/etc/conf.d/pg_customized.conf:ro
208 208 # db dumps reverse mount
209 209 - $PWD/.custom/db_dump:/var/rc-data-dump
210 210 # save the pg_data volume
211 211 - pg_data:/var/lib/postgresql/data
212 212 - logvolume:/var/log/rhodecode
213 213
214 214 profiles:
215 215 ["postgres"]
216 216
217 217 logging:
218 218 *custom-logging
219 219
220 220 database-mysql:
221 221 networks:
222 222 - rhodecode_network
223 223 image: library/mysql:8.0.31
224 224
225 225 environment:
226 226 MYSQL_DATABASE: ${DB_NAME:?must-specify-db-name}
227 227 MYSQL_USER: ${DB_USER:?must-specify-db-user}
228 228 MYSQL_PASSWORD: ${DB_PASSWORD:?must-specify-db-password}
229 229 MYSQL_ROOT_PASSWORD: ${DB_PASSWORD:?must-specify-db-password}
230 230 env_file:
231 231 - ${RC_ENV_FILE:?must-specify-rc-env-file}
232 232
233 233 restart: always
234 234
235 235 # ports:
236 236 # - "127.0.0.1::3306"
237 237
238 238 volumes:
239 239 - ./config/database/mysql_customized.conf:/etc/mysql/conf.d/config-file.cnf:ro
240 240 # save the mysql_data volume
241 241 - $PWD/mysql_dir:/var/lib/mysql
242 242 - logvolume:/var/log/rhodecode
243 243
244 244 profiles:
245 245 ["mysql"]
246 246
247 247 logging:
248 248 *custom-logging
@@ -1,33 +1,42 b''
1 1 version: '3.9'
2 2
3 3 services:
4 4
5 5 rhodecode:
6 ports:
7 - "10020:10020"
6 #ports:
7 # # expose port for optional direct port connection
8 # - "10020:10020"
8 9 environment:
9 10 DB_UPGRADE: 0 # run the DB upgrade
10 11 SETUP_APP: 0 # run the application default settings setup, can be turned off after initial run
11 12
13 #healthcheck:
14 # # disable the healthcheck
15 # test: ['CMD','true']
16
12 17 deploy:
13 18 replicas: 1
14 19
15 20 vcsserver:
16 21
17 22 environment:
18 23 {}
19 24
20 25 deploy:
21 26 replicas: 1
22 27
28 #healthcheck:
29 # # disable the healthcheck
30 # test: ['CMD','true']
31
23 32 sshd:
24 33 {}
25 34
26 35 svn:
27 36 {}
28 37
29 38 celery-beat:
30 39 {}
31 40
32 41 celery:
33 42 {}
General Comments 0
You need to be logged in to leave comments. Login now