Ctrl K
ComunidadGuías…

docker-compose.yml

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

Archivo original ↗Preguntar a KiBot
services:
  kafka-data-init:
    image: busybox
    command: ["chown", "-R", "1000:1000", "/mnt/kafka-data"]
    volumes:
      - ${KAFKA_DATA_DIR:-kafka-data}:/mnt/kafka-data

  kafka:
    image: apache/kafka:3.8.0
    depends_on:
      kafka-data-init:
        condition: service_completed_successfully
    environment:
      KAFKA_NODE_ID: 1
      KAFKA_PROCESS_ROLES: broker,controller
      KAFKA_LISTENERS: PLAINTEXT://:9092,CONTROLLER://:9093
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092
      KAFKA_CONTROLLER_LISTENER_NAMES: CONTROLLER
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT
      KAFKA_CONTROLLER_QUORUM_VOTERS: 1@kafka:9093
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
      CLUSTER_ID: MkU3OEVBNTcwNTJENDM2Qk
      KAFKA_LOG_DIRS: /mnt/kafka-data
    ports:
      - "9092:9092"
    volumes:
      - ${KAFKA_DATA_DIR:-kafka-data}:/mnt/kafka-data
    healthcheck:
      test: ["CMD", "/opt/kafka/bin/kafka-broker-api-versions.sh", "--bootstrap-server", "localhost:9092"]
      interval: 5s
      timeout: 5s
      retries: 10
      start_period: 20s

  bridge:
    build:
      context: .
    ports:
      - "8080:8080"
    environment:
      ARK_CONFIG_FILE: /var/lib/ark/config.yaml
      # Demo tokens. Change them (or unset them to allow only localhost)
      # before exposing this anywhere.
      ARK_API_ADMIN_TOKENS: ${ARK_API_ADMIN_TOKENS:-demo-admin-token}
      ARK_MCP_ADMIN_TOKENS: ${ARK_MCP_ADMIN_TOKENS:-demo-mcp-token}
      # Bearer token for the demo HTTP source (POST /ingest/demo).
      ARK_SOURCE_DEMO_TOKEN: ${ARK_SOURCE_DEMO_TOKEN:-demo-source-token}
      # Tokens for project MCP endpoints with tokens_env: ARK_PROJECT_DEMO_TOKENS.
      ARK_PROJECT_DEMO_TOKENS: ${ARK_PROJECT_DEMO_TOKENS:-demo-project-token}
      # Connection string for flow database steps with dsn_env: ARK_DEMO_DB.
      ARK_DEMO_DB: ${ARK_DEMO_DB:-}
    # The demo config is copied into the volume on first start, so console
    # and MCP changes are kept; docker compose down -v starts over.
    entrypoint: ["sh", "-c", "test -f /var/lib/ark/config.yaml || cp /etc/bridge/seed.yaml /var/lib/ark/config.yaml; exec ark"]
    volumes:
      - ${ARK_CONFIG:-./bridge-engine/config.demo.yaml}:/etc/bridge/seed.yaml:ro
      - ark-config:/var/lib/ark
    depends_on:
      kafka:
        condition: service_healthy
      ark-config-init:
        condition: service_completed_successfully
    # Lets the assistant reach a model server on this machine, such as
    # Ollama at http://host.docker.internal:11434/v1
    extra_hosts:
      - "host.docker.internal:host-gateway"
    restart: on-failure:5

  ark-config-init:
    image: busybox
    command: ["chown", "-R", "10001:10001", "/var/lib/ark"]
    volumes:
      - ark-config:/var/lib/ark

  demo-echo:
    build:
      context: ./bridge-engine
    entrypoint: ["demo-echo"]
    command: []

volumes:
  kafka-data:
  ark-config: