docker-compose-services.yaml
240 lines
| 5.7 KiB
| text/x-yaml
|
YamlLexer
r23 | version: '3.9' | |||
x-logging: &custom-logging | ||||
# docker plugin install grafana/loki-docker-driver:latest --alias loki --grant-all-permissions | ||||
# NOTE: loki logging driver ONLY works for host type networks... | ||||
driver: loki | ||||
options: | ||||
loki-url: "http://127.0.0.1:3100/loki/api/v1/push" | ||||
#loki-url: "http://loki: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" | ||||
command: ["channelstream", "-i", "/etc/rhodecode/conf/channelstream.ini"] | ||||
environment: | ||||
CHANNELSTREAM_ALLOW_POSTING_FROM: 0.0.0.0 | ||||
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.2 | ||||
restart: always | ||||
environment: | ||||
NGINX_ENTRYPOINT_QUIET_LOGS: 1 | ||||
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/_admin/ops/ping" ] | ||||
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.services.nginx.loadbalancer.server.port=80" | ||||
- "traefik.http.routers.nginx.rule=Host(`${RHODECODE_HOSTNAME:?must-specify-rhodecode-hostname}`)" | ||||
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" | ||||
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.5 | ||||
restart: always | ||||
command: | ||||
- "redis-server" | ||||
- "/etc/redis/redis.conf" | ||||
- "--maxmemory-policy allkeys-lru" | ||||
- "--maxmemory ${RC_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" | ||||
restart: unless-stopped | ||||
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} | ||||
restart: unless-stopped | ||||
# 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 | ||||