/
azathd
/
mutiagent
Обзор
Документация
Войти
/
azathd
/
mutiagent
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
docker-compose.yml
512 строк
12 KB
Your Name
init
15 май 2026, 19:11
15 май 2026, 19:11
f0c1163
Код
Авторство
О чём код?
name: xray-multiagent networks: xray_multiagent_internal: name: xray_multiagent_internal xray_multiagent_edge: name: xray_multiagent_edge marzban_default: name: marzban_default external: true volumes: pg_data: clickhouse_data: minio_data: nats_data: prometheus_data: grafana_data: geoip_data: marzban_xray_logs: name: marzban_xray_logs external: true xray_config_shared: name: xray_config_shared external: true services: nats: image: docker.io/library/nats:2.10-alpine command: ["--jetstream", "--store_dir=/data"] volumes: - nats_data:/data networks: - xray_multiagent_internal logging: driver: json-file options: max-size: "10m" max-file: "3" healthcheck: test: ["CMD-SHELL", "nc -z 127.0.0.1 4222"] interval: 10s timeout: 3s retries: 10 start_period: 5s restart: unless-stopped postgres: image: docker.io/library/postgres:16-alpine environment: POSTGRES_USER: "${POSTGRES_USER:-app}" POSTGRES_PASSWORD: "${POSTGRES_PASSWORD:?Set POSTGRES_PASSWORD in .env (see .env.example)}" POSTGRES_DB: "${POSTGRES_DB:-xray_multiagent}" volumes: - pg_data:/var/lib/postgresql/data networks: - xray_multiagent_internal logging: driver: json-file options: max-size: "10m" max-file: "3" healthcheck: test: ["CMD-SHELL", "pg_isready -U app -d xray_multiagent"] interval: 5s timeout: 5s retries: 10 start_period: 10s restart: unless-stopped redis: image: docker.io/library/redis:7-alpine command: ["redis-server", "--appendonly", "yes"] networks: - xray_multiagent_internal logging: driver: json-file options: max-size: "10m" max-file: "3" healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 5s timeout: 3s retries: 10 restart: unless-stopped clickhouse: image: docker.io/clickhouse/clickhouse-server:24 volumes: - clickhouse_data:/var/lib/clickhouse - ./deploy/clickhouse/config.d/docker.xml:/etc/clickhouse-server/config.d/docker.xml:ro networks: - xray_multiagent_internal logging: driver: json-file options: max-size: "10m" max-file: "3" healthcheck: test: ["CMD-SHELL", "wget -qO- http://127.0.0.1:8123/ping >/dev/null 2>&1 || exit 1"] interval: 10s timeout: 5s retries: 6 start_period: 35s restart: unless-stopped minio: image: docker.io/minio/minio:latest command: ["server", "/data", "--console-address", ":9001"] environment: MINIO_ROOT_USER: "${MINIO_ROOT_USER:-minio}" MINIO_ROOT_PASSWORD: "${MINIO_ROOT_PASSWORD:?Set MINIO_ROOT_PASSWORD}" volumes: - minio_data:/data networks: - xray_multiagent_internal logging: driver: json-file options: max-size: "10m" max-file: "3" healthcheck: test: ["CMD-SHELL", "curl -sf http://127.0.0.1:9000/minio/health/live >/dev/null"] interval: 10s timeout: 5s retries: 5 start_period: 30s restart: unless-stopped jaeger: image: docker.io/jaegertracing/all-in-one:latest environment: COLLECTOR_OTLP_ENABLED: "true" networks: - xray_multiagent_internal - xray_multiagent_edge ports: - "${JAEGER_UI_PORT:-16686}:16686" logging: driver: json-file options: max-size: "10m" max-file: "3" healthcheck: test: ["CMD-SHELL", "wget -qO- http://127.0.0.1:14269/ >/dev/null 2>&1 || exit 1"] interval: 15s timeout: 4s retries: 5 restart: unless-stopped prometheus: image: docker.io/prom/prometheus:latest command: - "--config.file=/etc/prometheus/prometheus.yml" volumes: - prometheus_data:/prometheus - ./deploy/prometheus.yml:/etc/prometheus/prometheus.yml:ro networks: - xray_multiagent_internal - xray_multiagent_edge ports: - "${PROMETHEUS_PORT:-9090}:9090" logging: driver: json-file options: max-size: "10m" max-file: "3" healthcheck: test: ["CMD-SHELL", "wget -qO- http://127.0.0.1:9090/-/healthy >/dev/null 2>&1 || exit 1"] interval: 15s timeout: 4s retries: 5 start_period: 10s restart: unless-stopped grafana: image: docker.io/grafana/grafana:latest environment: GF_SECURITY_ADMIN_USER: "${GRAFANA_ADMIN_USER:-admin}" GF_SECURITY_ADMIN_PASSWORD: "${GRAFANA_ADMIN_PASSWORD:-admin}" GF_SERVER_HTTP_PORT: "3000" volumes: - grafana_data:/var/lib/grafana networks: - xray_multiagent_internal - xray_multiagent_edge ports: - "${GRAFANA_PORT:-3000}:3000" logging: driver: json-file options: max-size: "10m" max-file: "3" healthcheck: test: ["CMD-SHELL", "wget -qO- http://127.0.0.1:3000/api/health >/dev/null 2>&1 || exit 1"] interval: 15s timeout: 5s retries: 6 start_period: 35s restart: unless-stopped caddy: image: docker.io/caddy:2-alpine depends_on: orchestrator: condition: service_healthy volumes: - ./deploy/Caddyfile:/etc/caddy/Caddyfile:ro networks: - xray_multiagent_internal - xray_multiagent_edge ports: - "${EDGE_HTTP_PORT:-9080}:80" logging: driver: json-file options: max-size: "10m" max-file: "3" healthcheck: test: ["CMD-SHELL", "wget -qO- http://127.0.0.1/healthz >/dev/null 2>&1 || exit 1"] interval: 15s timeout: 5s retries: 5 start_period: 10s restart: unless-stopped migrate: build: context: . dockerfile: docker/Dockerfile target: orchestrator image: xray-multiagent/orchestrator:latest user: "10001:10001" env_file: - .env environment: DATABASE_URL: "${DATABASE_URL}" entrypoint: [] command: ["python", "-m", "src.common.migrate"] depends_on: postgres: condition: service_healthy networks: - xray_multiagent_internal restart: "on-failure" orchestrator: build: context: . dockerfile: docker/Dockerfile target: orchestrator image: xray-multiagent/orchestrator:latest user: "10001:10001" read_only: true tmpfs: - /tmp - /var/tmp env_file: - .env environment: NATS_URL: "nats://nats:4222" REDIS_URL: "redis://redis:6379/0" DATABASE_URL: "${DATABASE_URL}" OTEL_EXPORTER_OTLP_ENDPOINT: "http://jaeger:4317" ORCHESTRATOR_METRICS_ENABLED: "1" AUTH_DISABLED: "${AUTH_DISABLED:-true}" POLICIES_PATH: "/app/policies.yaml" RULES_PATH: "/app/rules/default.yaml" volumes: - ./policies.yaml:/app/policies.yaml:ro - ./rules:/app/rules:ro depends_on: migrate: condition: service_completed_successfully nats: condition: service_healthy redis: condition: service_healthy postgres: condition: service_healthy networks: - xray_multiagent_internal - marzban_default ports: - "${ORCHESTRATOR_PORT:-8000}:8000" logging: driver: json-file options: max-size: "10m" max-file: "3" healthcheck: test: [ "CMD-SHELL", "python -c \"import urllib.request; urllib.request.urlopen('http://127.0.0.1:8000/healthz').read(); print('ok')\"", ] interval: 15s timeout: 5s retries: 15 start_period: 40s restart: unless-stopped collector: build: context: . dockerfile: docker/Dockerfile target: collector image: xray-multiagent/collector:latest user: "10001:10001" read_only: true volumes: - marzban_xray_logs:/mnt/marzban/xray-logs:ro - geoip_data:/var/lib/geoip:ro tmpfs: - /tmp env_file: - .env environment: NATS_URL: "nats://nats:4222" REDIS_URL: "redis://redis:6379/0" MARZBAN_LOG_DIR: "/mnt/marzban/xray-logs" ports: - "${COLLECTOR_METRICS_PORT:-9101}:9101" depends_on: nats: condition: service_healthy redis: condition: service_healthy networks: - xray_multiagent_internal - marzban_default logging: driver: json-file options: max-size: "10m" max-file: "3" restart: unless-stopped security: build: context: . dockerfile: docker/Dockerfile target: security image: xray-multiagent/security:latest user: "10001:10001" read_only: true tmpfs: - /tmp env_file: - .env environment: NATS_URL: "nats://nats:4222" RULES_PATH: "/app/rules/default.yaml" volumes: - ./rules:/app/rules:ro depends_on: nats: condition: service_healthy redis: condition: service_healthy networks: - xray_multiagent_internal - marzban_default logging: driver: json-file options: max-size: "10m" max-file: "3" restart: unless-stopped traffic: build: context: . dockerfile: docker/Dockerfile target: traffic image: xray-multiagent/traffic:latest user: "10001:10001" read_only: true tmpfs: - /tmp env_file: - .env environment: NATS_URL: "nats://nats:4222" depends_on: nats: condition: service_healthy networks: - xray_multiagent_internal - marzban_default logging: driver: json-file options: max-size: "10m" max-file: "3" restart: unless-stopped profiler: build: context: . dockerfile: docker/Dockerfile target: profiler image: xray-multiagent/profiler:latest user: "10001:10001" read_only: true tmpfs: - /tmp env_file: - .env environment: NATS_URL: "nats://nats:4222" REDIS_URL: "redis://redis:6379/0" CLICKHOUSE_HTTP_URL: "${CLICKHOUSE_HTTP_URL:-http://clickhouse:8123}" DATABASE_URL: "${DATABASE_URL}" MARZBAN_API_URL: "${MARZBAN_API_URL:-}" depends_on: nats: condition: service_healthy redis: condition: service_healthy clickhouse: condition: service_healthy postgres: condition: service_healthy networks: - xray_multiagent_internal - marzban_default logging: driver: json-file options: max-size: "10m" max-file: "3" restart: unless-stopped reporting: build: context: . dockerfile: docker/Dockerfile target: reporting image: xray-multiagent/reporting:latest user: "10001:10001" read_only: true tmpfs: - /tmp env_file: - .env environment: NATS_URL: "nats://nats:4222" CLICKHOUSE_HTTP_URL: "${CLICKHOUSE_HTTP_URL:-http://clickhouse:8123}" MINIO_ENDPOINT: "${MINIO_ENDPOINT:-http://minio:9000}" depends_on: minio: condition: service_healthy nats: condition: service_healthy clickhouse: condition: service_healthy networks: - xray_multiagent_internal logging: driver: json-file options: max-size: "10m" max-file: "3" restart: unless-stopped executor: build: context: . dockerfile: docker/Dockerfile target: executor image: xray-multiagent/executor:latest cap_drop: - ALL cap_add: - NET_ADMIN - NET_BIND_SERVICE security_opt: - no-new-privileges:true read_only: true tmpfs: - /tmp networks: - xray_multiagent_internal - marzban_default env_file: - .env environment: NATS_URL: "nats://nats:4222" EXECUTOR_DRY_RUN: "${EXECUTOR_DRY_RUN:-true}" MARZBAN_API_URL: "${MARZBAN_API_URL:-}" DATABASE_URL: "${DATABASE_URL}" MINIO_ENDPOINT: "${MINIO_ENDPOINT:-http://minio:9000}" depends_on: nats: condition: service_healthy postgres: condition: service_healthy minio: condition: service_healthy logging: driver: json-file options: max-size: "10m" max-file: "3" restart: unless-stopped