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