DockerPrograms/Revolt/compose.yaml

184 lines
4.0 KiB
YAML
Raw Permalink Normal View History

2024-07-18 21:15:59 +00:00
services:
# r-proxy, log generator
caddy:
image: caddy:latest
restart: always
env_file: .env.caddy
ports:
- '8880:80'
- '4443:443'
volumes:
- './Caddyfile:/etc/caddy/Caddyfile'
- './data/caddy-data:/data'
- './data/caddy-config:/config'
##########################################
# Monitoring
#####
# log collector
prometheus:
image: prom/prometheus:latest
restart: always
volumes:
- ./prometheus/:/etc/prometheus/
- prometheus_storage:/prometheus
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/prometheus'
- '--web.console.libraries=/usr/share/prometheus/console_libraries'
- '--web.console.templates=/usr/share/prometheus/consoles'
ports:
- 9090:9090
# links:
# - cadvisor:cadvisor
depends_on:
- cadvisor
- caddy
# log viewer
grafana:
image: grafana/grafana:latest
user: "472"
restart: always
ports:
- 3000:3000
volumes:
- './grafana/provisioning/:/etc/grafana/provisioning/'
- 'grafana_storage:/var/lib/grafana'
env_file:
- ./grafana/.env.grafana
depends_on:
- prometheus
node-exporter:
image: quay.io/prometheus/node-exporter:latest
volumes:
- /proc:/host/proc:ro
- /sys:/host/sys:ro
- /:/rootfs:ro
- /:/host:ro,rslave
command:
- '--path.rootfs=/host'
- '--path.procfs=/host/proc'
- '--path.sysfs=/host/sys'
- --collector.filesystem.mount-points-exclude
- "^/(sys|proc|dev|host|etc|rootfs/var/lib/docker/containers|rootfs/var/lib/docker/overlay2|rootfs/run/docker/netns|rootfs/var/lib/docker/aufs)($$|/)"
ports:
- 9100:9100
restart: always
deploy:
mode: global
cadvisor:
image: gcr.io/cadvisor/cadvisor
volumes:
- /:/rootfs:ro
- /var/run:/var/run:rw
- /sys:/sys:ro
- /var/lib/docker/:/var/lib/docker:ro
ports:
- 8080:8080
restart: always
deploy:
mode: global
##########################################
# Revolt
#####
# MongoDB database
database:
image: mongo
restart: always
volumes:
- './data/db:/data/db'
# Redis server
redis:
image: eqalpha/keydb
restart: always
# S3-compatible storage server
minio:
image: minio/minio
command: server /data
env_file: .env
volumes:
- './data/minio:/data'
restart: always
# API server (delta)
api:
image: ghcr.io/revoltchat/server:latest
env_file: .env
depends_on:
- database
- redis
- caddy
restart: always
volumes:
- './Revolt.toml:/Revolt.toml'
# Events service (quark)
events:
image: ghcr.io/revoltchat/bonfire:latest
env_file: .env
depends_on:
- database
- redis
- caddy
restart: always
volumes:
- './Revolt.toml:/Revolt.toml'
# Web App (revite)
web:
image: ghcr.io/revoltchat/client:master
env_file: .env
depends_on:
- caddy
restart: always
# File server (autumn)
autumn:
image: ghcr.io/revoltchat/autumn:latest
env_file: .env
depends_on:
- database
- createbuckets
- caddy
environment:
- AUTUMN_MONGO_URI=mongodb://database
restart: always
# Metadata and image proxy (january)
january:
image: ghcr.io/revoltchat/january:latest
depends_on:
- caddy
restart: always
# Create buckets for minio.
createbuckets:
image: minio/mc
depends_on:
- minio
env_file: .env
entrypoint: >
/bin/sh -c "
/usr/bin/mc config host add minio http://minio:9000 $MINIO_ROOT_USER $MINIO_ROOT_PASSWORD;
while ! /usr/bin/mc ready minio; do echo 'Waiting minio...' && sleep 1; done;
/usr/bin/mc mb minio/attachments;
/usr/bin/mc mb minio/avatars;
/usr/bin/mc mb minio/backgrounds;
/usr/bin/mc mb minio/icons;
/usr/bin/mc mb minio/banners;
/usr/bin/mc mb minio/emojis;
exit 0;
"
volumes:
grafana_storage: {}
prometheus_storage: {}