|
|
version: '3.9'
|
|
|
|
|
|
x-logging: &custom-logging
|
|
|
# docker plugin install grafana/loki-docker-driver:2.7.1 --alias loki --grant-all-permissions
|
|
|
# NOTE: loki logging driver ONLY works for host type networks...
|
|
|
driver: loki
|
|
|
options:
|
|
|
#loki-url: "http://${RC_LOKI_AUTH}loki:3100/loki/api/v1/push"
|
|
|
loki-url: "http://${RC_LOKI_AUTH}127.0.0.1:3100/loki/api/v1/push"
|
|
|
loki-retries: "5"
|
|
|
loki-timeout: "1s"
|
|
|
loki-max-backoff: "800ms"
|
|
|
|
|
|
volumes:
|
|
|
|
|
|
# volume for redis data store
|
|
|
redis_data:
|
|
|
labels:
|
|
|
"keep": 1
|
|
|
|
|
|
# volume for Postgres db store
|
|
|
|
|
|
# volume for Postgres Data
|
|
|
pg_data:
|
|
|
labels:
|
|
|
"keep": 1
|
|
|
|
|
|
# volume for rhodecode elasticsearch
|
|
|
es_data:
|
|
|
labels:
|
|
|
"keep": 1
|
|
|
|
|
|
|
|
|
services:
|
|
|
|
|
|
channelstream:
|
|
|
networks:
|
|
|
- rhodecode_network
|
|
|
image: channelstream/channelstream:0.7.1
|
|
|
|
|
|
restart: always
|
|
|
|
|
|
# ports:
|
|
|
# - "127.0.0.1:9800:9800"
|
|
|
env_file:
|
|
|
- ${RC_ENV_FILE:?must-specify-rc-env-file}
|
|
|
command: ["channelstream"]
|
|
|
|
|
|
healthcheck:
|
|
|
test: [ "CMD", "curl", "-s", "-o", "/dev/null", "-w", "'%{http_code}'", "http://channelstream:8000/admin/sign_in" ]
|
|
|
timeout: 5s
|
|
|
interval: 60s
|
|
|
retries: 10
|
|
|
|
|
|
volumes:
|
|
|
- confvolume:/etc/rhodecode/conf
|
|
|
- logvolume:/var/log/rhodecode
|
|
|
|
|
|
logging:
|
|
|
*custom-logging
|
|
|
|
|
|
labels:
|
|
|
- "traefik.enable=false"
|
|
|
#- "traefik.http.routers.channelstream.entrypoints=http"
|
|
|
#- "traefik.http.services.channelstream.loadbalancer.server.port=9800"
|
|
|
|
|
|
profiles:
|
|
|
["channelstream"]
|
|
|
|
|
|
nginx:
|
|
|
networks:
|
|
|
- rhodecode_network
|
|
|
image: library/nginx:1.23.3
|
|
|
|
|
|
restart: always
|
|
|
|
|
|
environment:
|
|
|
NGINX_ENTRYPOINT_QUIET_LOGS: 1
|
|
|
env_file:
|
|
|
- ${RC_ENV_FILE:?must-specify-rc-env-file}
|
|
|
|
|
|
healthcheck:
|
|
|
# change port 80 to 443 when only using SSL
|
|
|
test: [ "CMD", "curl", "-A", "RhodeCode-Healthcheck", "-s", "-o", "/dev/null", "-w", "'%{http_code}'", "http://127.0.0.1:80/_health" ]
|
|
|
timeout: 30s
|
|
|
interval: 60s
|
|
|
retries: 10
|
|
|
|
|
|
# depends_on:
|
|
|
# - channelstream
|
|
|
|
|
|
volumes:
|
|
|
- ./config/nginx/nginx.conf:/etc/nginx/nginx.conf:ro
|
|
|
- ./config/nginx/http.conf:/etc/nginx/http.conf:ro
|
|
|
- ./config/nginx/proxy.conf:/etc/nginx/proxy.conf:ro
|
|
|
- logvolume:/var/log/rhodecode
|
|
|
- rc_datavolume:/var/opt/rhodecode_data
|
|
|
|
|
|
logging:
|
|
|
*custom-logging
|
|
|
|
|
|
labels:
|
|
|
- "traefik.enable=true"
|
|
|
- "traefik.http.routers.nginx.entrypoints=http"
|
|
|
- "traefik.http.routers.nginx.rule=Host(`${RC_HOSTNAME:?must-specify-rhodecode-hostname}`) && ( PathPrefix(`/_health`) || PathPrefix(`/_channelstream`) || PathPrefix(`/_static/rhodecode`) )"
|
|
|
- "traefik.http.services.nginx.loadbalancer.server.port=80"
|
|
|
|
|
|
elasticsearch:
|
|
|
networks:
|
|
|
- rhodecode_network
|
|
|
image: elasticsearch:6.8.23
|
|
|
|
|
|
environment:
|
|
|
- cluster.name=elasticsearch-cluster
|
|
|
- network.host=0.0.0.0
|
|
|
- bootstrap.memory_lock=true
|
|
|
- discovery.type=single-node
|
|
|
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
|
|
|
env_file:
|
|
|
- ${RC_ENV_FILE:?must-specify-rc-env-file}
|
|
|
healthcheck:
|
|
|
# change port 80 to 443 when only using SSL
|
|
|
test: [ "CMD", "curl", "-A", "RhodeCode-Healthcheck", "-s", "-o", "/dev/null", "-w", "'%{http_code}'", "elasticsearch:9200/_cat/health" ]
|
|
|
timeout: 30s
|
|
|
interval: 60s
|
|
|
retries: 10
|
|
|
|
|
|
ulimits:
|
|
|
memlock:
|
|
|
soft: -1
|
|
|
hard: -1
|
|
|
|
|
|
volumes:
|
|
|
- es_data:/usr/share/elasticsearch/data
|
|
|
|
|
|
logging:
|
|
|
*custom-logging
|
|
|
|
|
|
profiles:
|
|
|
["elasticsearch"]
|
|
|
|
|
|
redis:
|
|
|
networks:
|
|
|
- rhodecode_network
|
|
|
image: library/redis:7.0.6
|
|
|
|
|
|
restart: always
|
|
|
env_file:
|
|
|
- ${RC_ENV_FILE:?must-specify-rc-env-file}
|
|
|
command:
|
|
|
- "redis-server"
|
|
|
- "/etc/redis/redis.conf"
|
|
|
- "--maxmemory-policy allkeys-lru"
|
|
|
- "--maxmemory ${RC_REDIS_MAXMEMORY:?must-specify-redis-maxmemory}"
|
|
|
|
|
|
# ports:
|
|
|
# - "127.0.0.1::6379"
|
|
|
|
|
|
healthcheck:
|
|
|
test: [ "CMD", "redis-cli", "--raw", "incr", "ping" ]
|
|
|
interval: 60s
|
|
|
|
|
|
volumes:
|
|
|
- ./config/redis/redis.conf:/etc/redis/redis.conf:ro
|
|
|
- logvolume:/var/log/rhodecode
|
|
|
- redis_data:/data
|
|
|
|
|
|
profiles:
|
|
|
["redis"]
|
|
|
|
|
|
logging:
|
|
|
*custom-logging
|
|
|
|
|
|
database:
|
|
|
networks:
|
|
|
- rhodecode_network
|
|
|
image: library/postgres:14.6
|
|
|
|
|
|
environment:
|
|
|
POSTGRES_DB: ${DB_NAME:?must-specify-db-name}
|
|
|
POSTGRES_USER: ${DB_USER:?must-specify-db-user}
|
|
|
PGUSER: ${DB_USER:?must-specify-db-user}
|
|
|
POSTGRES_PASSWORD: ${DB_PASSWORD:?must-specify-db-password}
|
|
|
POSTGRES_HOST_AUTH_METHOD: md5
|
|
|
POSTGRES_INITDB_ARGS: "--auth-host=md5 --auth-local=md5"
|
|
|
env_file:
|
|
|
- ${RC_ENV_FILE:?must-specify-rc-env-file}
|
|
|
|
|
|
restart: always
|
|
|
command:
|
|
|
- "postgres"
|
|
|
- "-c"
|
|
|
- "log_statement=ddl"
|
|
|
- "-c"
|
|
|
- "config_file=/etc/conf.d/pg_customized.conf"
|
|
|
|
|
|
# ports:
|
|
|
# - "127.0.0.1::5432"
|
|
|
|
|
|
healthcheck:
|
|
|
test: ["CMD-SHELL", "pg_isready", '-U', "$DB_USER"]
|
|
|
interval: 10s
|
|
|
timeout: 5s
|
|
|
retries: 5
|
|
|
|
|
|
volumes:
|
|
|
- $PWD/config/database/pg_customized.conf:/etc/conf.d/pg_customized.conf:ro
|
|
|
# db dumps reverse mount
|
|
|
- $PWD/.custom/db_dump:/var/rc-data-dump
|
|
|
# save the pg_data volume
|
|
|
- pg_data:/var/lib/postgresql/data
|
|
|
- logvolume:/var/log/rhodecode
|
|
|
|
|
|
profiles:
|
|
|
["postgres"]
|
|
|
|
|
|
logging:
|
|
|
*custom-logging
|
|
|
|
|
|
database-mysql:
|
|
|
networks:
|
|
|
- rhodecode_network
|
|
|
image: library/mysql:8.0.31
|
|
|
|
|
|
environment:
|
|
|
MYSQL_DATABASE: ${DB_NAME:?must-specify-db-name}
|
|
|
MYSQL_USER: ${DB_USER:?must-specify-db-user}
|
|
|
MYSQL_PASSWORD: ${DB_PASSWORD:?must-specify-db-password}
|
|
|
MYSQL_ROOT_PASSWORD: ${DB_PASSWORD:?must-specify-db-password}
|
|
|
env_file:
|
|
|
- ${RC_ENV_FILE:?must-specify-rc-env-file}
|
|
|
|
|
|
restart: always
|
|
|
|
|
|
# ports:
|
|
|
# - "127.0.0.1::3306"
|
|
|
|
|
|
volumes:
|
|
|
- ./config/database/mysql_customized.conf:/etc/mysql/conf.d/config-file.cnf:ro
|
|
|
# save the mysql_data volume
|
|
|
- $PWD/mysql_dir:/var/lib/mysql
|
|
|
- logvolume:/var/log/rhodecode
|
|
|
|
|
|
profiles:
|
|
|
["mysql"]
|
|
|
|
|
|
logging:
|
|
|
*custom-logging
|
|
|
|