Ctrl K
ComunidadGuías…

docker-compose.dev.yml

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
name: ${HDX_DEV_PROJECT:-hdx-oss-dev}
x-hdx-labels: &hdx-labels
  hdx.dev.slot: '${HDX_DEV_SLOT:-0}'
  hdx.dev.branch: '${HDX_DEV_BRANCH:-unknown}'
  hdx.dev.worktree: '${HDX_DEV_WORKTREE:-unknown}'
services:
  db:
    labels:
      <<: *hdx-labels
      hdx.dev.service: mongodb
      hdx.dev.port: '${HDX_DEV_MONGO_PORT:-27017}'
    image: mongo:5.0.32-focal
    volumes:
      - .volumes/db_dev_${HDX_DEV_SLOT:-0}:/data/db
    ports:
      - '${HDX_DEV_MONGO_PORT:-27017}:27017'
    networks:
      - internal
  otel-collector:
    labels:
      <<: *hdx-labels
      hdx.dev.service: otel-collector
      hdx.dev.port: '${HDX_DEV_OTEL_HTTP_PORT:-4318}'
      hdx.dev.url: 'http://localhost:${HDX_DEV_OTEL_HTTP_PORT:-4318}'
    build:
      context: .
      dockerfile: docker/otel-collector/Dockerfile
      target: dev
      args:
        OTEL_COLLECTOR_VERSION: ${OTEL_COLLECTOR_VERSION}
        OTEL_COLLECTOR_CORE_VERSION: ${OTEL_COLLECTOR_CORE_VERSION}
    environment:
      CLICKHOUSE_ENDPOINT: 'tcp://ch-server:9000?dial_timeout=10s'
      # host:port (plain HTTP), http://host:port or https://host:port
      CLICKHOUSE_PROMETHEUS_METRICS_ENDPOINT: 'ch-server:9363'
      HYPERDX_OTEL_EXPORTER_CLICKHOUSE_DATABASE: ${HYPERDX_OTEL_EXPORTER_CLICKHOUSE_DATABASE}
      HYPERDX_API_KEY: ${HYPERDX_API_KEY}
      HYPERDX_LOG_LEVEL: ${HYPERDX_LOG_LEVEL}
      OPAMP_SERVER_URL: 'http://host.docker.internal:${HYPERDX_OPAMP_PORT:-4320}'
      CUSTOM_OTELCOL_CONFIG_FILE: '/etc/otelcol-contrib/custom.config.yaml'
      # Uncomment to enable stdout logging for the OTel collector
      OTEL_SUPERVISOR_LOGS: 'true'
      HYPERDX_OTEL_EXPORTER_TABLES_TTL: '24h'
      # Optional per-signal overrides; each falls back to HYPERDX_OTEL_EXPORTER_TABLES_TTL:
      #   HYPERDX_OTEL_EXPORTER_LOGS_TTL / _TRACES_TTL / _METRICS_TTL / _SESSIONS_TTL
      # Apply TTL changes to already-existing tables too (default false):
      #   HYPERDX_OTEL_EXPORTER_RECONCILE_TABLE_TTL: 'true'
      ENABLE_PROMQL: 'true'
    volumes:
      - ./docker/otel-collector/config.yaml:/etc/otelcol-contrib/config.yaml
      - ./docker/otel-collector/supervisor_docker.yaml.tmpl:/etc/otel/supervisor.yaml.tmpl
      # Add a custom config file
      - ./docker/otel-collector/custom.config.yaml:/etc/otelcol-contrib/custom.config.yaml
    ports:
      - '${HDX_DEV_OTEL_HEALTH_PORT:-13133}:13133' # health_check extension
      - '${HDX_DEV_OTEL_GRPC_PORT:-4317}:4317' # OTLP gRPC receiver
      - '${HDX_DEV_OTEL_HTTP_PORT:-4318}:4318' # OTLP http receiver
      - '${HDX_DEV_OTEL_METRICS_PORT:-8888}:8888' # metrics extension
      # Uncomment to enable statsd ingestion (also requires adding the
      # `statsd` receiver to a pipeline in custom.config.yaml - see
      # packages/otel-collector/README.md). Left commented out by default:
      # a fixed host port mapping fails the whole service's startup if
      # something else on the host already owns 8125/udp.
      # - '${HDX_DEV_OTEL_STATSD_PORT:-8125}:8125/udp' # statsd receiver
    restart: always
    networks:
      - internal
    depends_on:
      ch-server:
        condition: service_healthy
  otel-collector-json:
    labels:
      <<: *hdx-labels
      hdx.dev.service: otel-collector-json
      hdx.dev.port: '${HDX_DEV_OTEL_JSON_HTTP_PORT:-14318}'
      hdx.dev.url: 'http://localhost:${HDX_DEV_OTEL_JSON_HTTP_PORT:-14318}'
    build:
      context: .
      dockerfile: docker/otel-collector/Dockerfile
      target: dev
      args:
        OTEL_COLLECTOR_VERSION: ${OTEL_COLLECTOR_VERSION}
        OTEL_COLLECTOR_CORE_VERSION: ${OTEL_COLLECTOR_CORE_VERSION}
    environment:
      CLICKHOUSE_ENDPOINT: 'tcp://ch-server:9000?dial_timeout=10s'
      CLICKHOUSE_PROMETHEUS_METRICS_ENDPOINT: 'ch-server:9363'
      HYPERDX_OTEL_EXPORTER_CLICKHOUSE_DATABASE: 'otel_json'
      HYPERDX_OTEL_EXPORTER_CREATE_LEGACY_SCHEMA: 'true'
      HYPERDX_API_KEY: ${HYPERDX_API_KEY}
      HYPERDX_LOG_LEVEL: ${HYPERDX_LOG_LEVEL}
      OPAMP_SERVER_URL: 'http://host.docker.internal:${HYPERDX_OPAMP_PORT:-4320}'
      CUSTOM_OTELCOL_CONFIG_FILE: '/etc/otelcol-contrib/custom.config.yaml'
      # Uncomment to enable stdout logging for the OTel collector
      OTEL_SUPERVISOR_LOGS: 'true'
      # Enable JSON schema in the ClickHouse exporter (per-exporter config)
      # Be sure to also set BETA_CH_OTEL_JSON_SCHEMA_ENABLED to 'true' in ch-server
      HYPERDX_OTEL_EXPORTER_CLICKHOUSE_JSON_ENABLE: 'true'
    volumes:
      - ./docker/otel-collector/config.yaml:/etc/otelcol-contrib/config.yaml
      - ./docker/otel-collector/supervisor_docker.yaml.tmpl:/etc/otel/supervisor.yaml.tmpl
    ports:
      - '${HDX_DEV_OTEL_JSON_HTTP_PORT:-14318}:4318' # OTLP http receiver
    restart: always
    networks:
      - internal
    depends_on:
      ch-server:
        condition: service_healthy
  ch-server:
    labels:
      <<: *hdx-labels
      hdx.dev.service: clickhouse
      hdx.dev.port: '${HDX_DEV_CH_HTTP_PORT:-8123}'
      hdx.dev.url: 'http://localhost:${HDX_DEV_CH_HTTP_PORT:-8123}'
    image: clickhouse/clickhouse-server:26.8.36.3-alpine
    ports:
      - '${HDX_DEV_CH_HTTP_PORT:-8123}:8123' # http api
      - '${HDX_DEV_CH_NATIVE_PORT:-9000}:9000' # native
    environment:
      # default settings
      CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT: 1
      HYPERDX_OTEL_EXPORTER_CLICKHOUSE_DATABASE: ${HYPERDX_OTEL_EXPORTER_CLICKHOUSE_DATABASE}
      # Set to 'true' to allow for proper OTel JSON Schema creation
      # Be sure to also set HYPERDX_OTEL_EXPORTER_CLICKHOUSE_JSON_ENABLE in otel-collector
      # BETA_CH_OTEL_JSON_SCHEMA_ENABLED: 'true'
    volumes:
      - ./docker/clickhouse/local/config.xml:/etc/clickhouse-server/config.xml
      - ./docker/clickhouse/local/users.xml:/etc/clickhouse-server/users.xml
      - .volumes/ch_data_dev_${HDX_DEV_SLOT:-0}:/var/lib/clickhouse
      - .volumes/ch_logs_dev_${HDX_DEV_SLOT:-0}:/var/log/clickhouse-server
    restart: on-failure
    networks:
      - internal
    healthcheck:
      test:
        wget -O /dev/null --no-verbose --tries=1 http://127.0.0.1:8123/ping ||
        exit 1
      interval: 1s
      timeout: 1s
      retries: 60

  # nginx:
  #   image: nginx:alpine
  #   ports:
  #     - '4040:4040'
  #   volumes:
  #     - ./proxy/nginx/nginx.conf.template:/etc/nginx/templates/default.conf.template:ro
  #   environment:
  #     HYPERDX_BASE_PATH: ${HYPERDX_BASE_PATH:-/}
  #   network_mode: host
  #   restart: always

  # traefik:
  #   image: traefik:latest
  #   ports:
  #     - '4040:4040'
  #   volumes:
  #     - ./proxy/traefik/traefik.yml:/etc/traefik/traefik.yml:ro
  #     - ./proxy/traefik/config.yml:/etc/traefik/dynamic/config.yml:ro
  #   environment:
  #     HYPERDX_BASE_PATH: ${HYPERDX_BASE_PATH:-/}
  #   network_mode: host
  #   restart: always

  prometheus:
    labels:
      <<: *hdx-labels
      hdx.dev.service: prometheus
      hdx.dev.port: '${HDX_DEV_PROMETHEUS_PORT:-9090}'
      hdx.dev.url: 'http://localhost:${HDX_DEV_PROMETHEUS_PORT:-9090}'
    profiles:
      - prometheus
    image: prom/prometheus:latest
    ports:
      - '${HDX_DEV_PROMETHEUS_PORT:-9090}:9090'
    volumes:
      - ./docker/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
      - .volumes/prometheus_data_dev_${HDX_DEV_SLOT:-0}:/prometheus
    networks:
      - internal
    restart: on-failure

networks:
  internal: