Files
akvorado/docker-compose.yml

133 lines
4.2 KiB
YAML

---
version: "3"
volumes:
akvorado-zookeeper:
akvorado-kafka:
akvorado-geoip:
akvorado-clickhouse:
akvorado-run:
akvorado-console-db:
services:
geoip:
# Put ACCOUNT_ID and LICENSE_KEY here, or provide them on the command-line
# (env GEOIPUPDATE_ACCOUNT_ID=... GEOIPUPDATE_LICENSE_KEY=... docker-compose ...)
image: maxmindinc/geoipupdate:v4
environment:
- GEOIPUPDATE_ACCOUNT_ID
- GEOIPUPDATE_LICENSE_KEY
- GEOIPUPDATE_EDITION_IDS=GeoLite2-ASN GeoLite2-Country
- GEOIPUPDATE_FREQUENCY=48
volumes:
- akvorado-geoip:/usr/share/GeoIP
zookeeper:
image: bitnami/zookeeper:3.6
environment:
- ALLOW_ANONYMOUS_LOGIN=yes
restart: unless-stopped
volumes:
- akvorado-zookeeper:/bitnami/zookeeper
kafka:
image: bitnami/kafka:2.8.1
environment:
- KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181
- ALLOW_PLAINTEXT_LISTENER=yes
- KAFKA_DELETE_TOPIC_ENABLE=true
restart: unless-stopped
depends_on:
- zookeeper
volumes:
- akvorado-kafka:/bitnami/kafka
healthcheck:
interval: 20s
timeout: 10s
retries: 3
test: ["CMD", "kafka-topics.sh", "--list", "--zookeeper", "zookeeper:2181"]
akvorado-orchestrator:
build: &akvorado-image
context: .
restart: unless-stopped
command: orchestrator /etc/akvorado.yaml
volumes:
- ./akvorado.yaml:/etc/akvorado.yaml:ro
labels:
- traefik.enable=true
- traefik.http.routers.akvorado-orchestrator.rule=PathPrefix(`/api/v0/orchestrator`)
- traefik.http.services.akvorado-orchestrator.loadbalancer.server.port=8080
akvorado-console:
build: *akvorado-image
restart: unless-stopped
command: console http://akvorado-orchestrator:8080
volumes:
- akvorado-console-db:/run/akvorado
labels:
- traefik.enable=true
- traefik.http.routers.akvorado-console.rule=PathPrefix(`/`)
- traefik.http.services.akvorado-console.loadbalancer.server.port=8080
- traefik.http.middlewares.testheader.headers.customrequestheaders.Remote-User=alfred
- traefik.http.middlewares.testheader.headers.customrequestheaders.Remote-Name=Alfred Pennyworth
- traefik.http.middlewares.testheader.headers.customrequestheaders.Remote-Email=alfred@example.com
akvorado-inlet:
build: *akvorado-image
ports:
- 2055:2055/udp
restart: unless-stopped
command: inlet http://akvorado-orchestrator:8080
volumes:
- akvorado-geoip:/usr/share/GeoIP:ro
- akvorado-run:/run/akvorado
labels:
- traefik.enable=true
- traefik.http.routers.akvorado-inlet.rule=PathPrefix(`/api/v0/inlet`)
- traefik.http.services.akvorado-inlet.loadbalancer.server.port=8080
akvorado-exporter0: &exporter
build: *akvorado-image
restart: unless-stopped
command: fake-exporter http://akvorado-orchestrator:8080#0
akvorado-exporter1:
<<: *exporter
command: fake-exporter http://akvorado-orchestrator:8080#1
akvorado-exporter2:
<<: *exporter
command: fake-exporter http://akvorado-orchestrator:8080#2
akvorado-exporter3:
<<: *exporter
command: fake-exporter http://akvorado-orchestrator:8080#3
clickhouse:
image: clickhouse/clickhouse-server:22.3
volumes:
- ./orchestrator/clickhouse/data/docker-entrypoint.sh:/docker-entrypoint-initdb.d/init-db.sh:ro
- akvorado-clickhouse:/var/lib/clickhouse
environment:
- CLICKHOUSE_INIT_TIMEOUT=60
restart: unless-stopped
healthcheck:
interval: 30s
timeout: 10s
retries: 3
test: ["CMD", "wget", "-T", "1", "--spider", "--no-proxy", "http://clickhouse:8123"]
labels:
- traefik.enable=true
- traefik.http.routers.clickhouse.rule=PathPrefix(`/clickhouse`)
- traefik.http.services.clickhouse.loadbalancer.server.port=8123
traefik:
image: traefik:2.6
restart: unless-stopped
command:
- --api.insecure=true
- --providers.docker=true
- --providers.docker.exposedbydefault=false
- --entrypoints.web.address=:80
ports:
- 80:80/tcp
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
labels:
- traefik.http.routers.traefik.rule=PathPrefix(`/traefik`)
- traefik.http.routers.traefik.service=api@internal