networks:
  edgex-network:
    driver: bridge
services:
  driver-box:
    image: docker.io/library/driver-box:0.3
    container_name: driver-box
    depends_on:
      - consul
      - database
      - metadata
    networks:
      edgex-network: {}
    ports:
      - 0.0.0.0:59999:59999/tcp
    read_only: true
    restart: always
    security_opt:
      - no-new-privileges:true
    user: 2002:2001

    environment:
      CLIENTS_CORE_COMMAND_HOST: edgex-core-command
      CLIENTS_CORE_DATA_HOST: edgex-core-data
      CLIENTS_CORE_METADATA_HOST: edgex-core-metadata
      CLIENTS_SUPPORT_NOTIFICATIONS_HOST: edgex-support-notifications
      CLIENTS_SUPPORT_SCHEDULER_HOST: edgex-support-scheduler
      DATABASES_PRIMARY_HOST: edgex-redis
      EDGEX_SECURITY_SECRET_STORE: "false"
      MESSAGEQUEUE_EXTERNAL_URL: tcp://edgex-mqtt-broker:1883
      MESSAGEQUEUE_HOST: edgex-redis
      MESSAGEQUEUE_INTERNAL_HOST: edgex-redis
      REGISTRY_HOST: edgex-core-consul
      SERVICE_HOST: driver-box

  command:
    container_name: edgex-core-command
    depends_on:
      - consul
      - database
      - metadata
    environment:
      CLIENTS_CORE_COMMAND_HOST: edgex-core-command
      CLIENTS_CORE_DATA_HOST: edgex-core-data
      CLIENTS_CORE_METADATA_HOST: edgex-core-metadata
      CLIENTS_SUPPORT_NOTIFICATIONS_HOST: edgex-support-notifications
      CLIENTS_SUPPORT_SCHEDULER_HOST: edgex-support-scheduler
      DATABASES_PRIMARY_HOST: edgex-redis
      EDGEX_SECURITY_SECRET_STORE: "false"
      MESSAGEQUEUE_EXTERNAL_URL: tcp://edgex-mqtt-broker:1883
      MESSAGEQUEUE_HOST: edgex-redis
      MESSAGEQUEUE_INTERNAL_HOST: edgex-redis
      REGISTRY_HOST: edgex-core-consul
      SERVICE_HOST: edgex-core-command
    hostname: edgex-core-command
    image: openyurt/core-command:2.3.0
    networks:
      edgex-network: {}
    ports:
      - 0.0.0.0:59882:59882/tcp
    read_only: true
    restart: always
    security_opt:
      - no-new-privileges:true
    user: 2002:2001
  consul:
    command: agent -ui -bootstrap -server -client 0.0.0.0
    container_name: edgex-core-consul
    hostname: edgex-core-consul
    image: consul:1.13.2
    networks:
      edgex-network: {}
    ports:
      - 0.0.0.0:8500:8500/tcp
    read_only: true
    restart: always
    security_opt:
      - no-new-privileges:true
    user: root:root
    volumes:
      - consul-config:/consul/config:z
      - consul-data:/consul/data:z
  data:
    container_name: edgex-core-data
    depends_on:
      - consul
      - database
      - metadata
    environment:
      CLIENTS_CORE_COMMAND_HOST: edgex-core-command
      CLIENTS_CORE_DATA_HOST: edgex-core-data
      CLIENTS_CORE_METADATA_HOST: edgex-core-metadata
      CLIENTS_SUPPORT_NOTIFICATIONS_HOST: edgex-support-notifications
      CLIENTS_SUPPORT_SCHEDULER_HOST: edgex-support-scheduler
      DATABASES_PRIMARY_HOST: edgex-redis
      EDGEX_SECURITY_SECRET_STORE: "false"
      MESSAGEQUEUE_HOST: edgex-redis
      REGISTRY_HOST: edgex-core-consul
      SERVICE_HOST: edgex-core-data
    hostname: edgex-core-data
    image: openyurt/core-data:2.3.0
    networks:
      edgex-network: {}
    ports:
      - 0.0.0.0:5563:5563/tcp
      - 0.0.0.0:59880:59880/tcp
    read_only: true
    restart: always
    security_opt:
      - no-new-privileges:true
    user: 2002:2001
  database:
    container_name: edgex-redis
    environment:
      CLIENTS_CORE_COMMAND_HOST: edgex-core-command
      CLIENTS_CORE_DATA_HOST: edgex-core-data
      CLIENTS_CORE_METADATA_HOST: edgex-core-metadata
      CLIENTS_SUPPORT_NOTIFICATIONS_HOST: edgex-support-notifications
      CLIENTS_SUPPORT_SCHEDULER_HOST: edgex-support-scheduler
      DATABASES_PRIMARY_HOST: edgex-redis
      EDGEX_SECURITY_SECRET_STORE: "false"
      MESSAGEQUEUE_HOST: edgex-redis
      REGISTRY_HOST: edgex-core-consul
    hostname: edgex-redis
    image: redis:7.0.5-alpine
    networks:
      edgex-network: {}
    ports:
      - 0.0.0.0:6379:6379/tcp
    read_only: true
    restart: always
    security_opt:
      - no-new-privileges:true
    user: root:root
    volumes:
      - db-data:/data:z
  metadata:
    container_name: edgex-core-metadata
    depends_on:
      - consul
      - database
      - notifications
    environment:
      CLIENTS_CORE_COMMAND_HOST: edgex-core-command
      CLIENTS_CORE_DATA_HOST: edgex-core-data
      CLIENTS_CORE_METADATA_HOST: edgex-core-metadata
      CLIENTS_SUPPORT_NOTIFICATIONS_HOST: edgex-support-notifications
      CLIENTS_SUPPORT_SCHEDULER_HOST: edgex-support-scheduler
      DATABASES_PRIMARY_HOST: edgex-redis
      EDGEX_SECURITY_SECRET_STORE: "false"
      MESSAGEQUEUE_HOST: edgex-redis
      NOTIFICATIONS_SENDER: edgex-core-metadata
      REGISTRY_HOST: edgex-core-consul
      SERVICE_HOST: edgex-core-metadata
    hostname: edgex-core-metadata
    image: openyurt/core-metadata:2.3.0
    networks:
      edgex-network: {}
    ports:
      - 0.0.0.0:59881:59881/tcp
    read_only: true
    restart: always
    security_opt:
      - no-new-privileges:true
    user: 2002:2001
  notifications:
    container_name: edgex-support-notifications
    depends_on:
      - consul
      - database
    environment:
      CLIENTS_CORE_COMMAND_HOST: edgex-core-command
      CLIENTS_CORE_DATA_HOST: edgex-core-data
      CLIENTS_CORE_METADATA_HOST: edgex-core-metadata
      CLIENTS_SUPPORT_NOTIFICATIONS_HOST: edgex-support-notifications
      CLIENTS_SUPPORT_SCHEDULER_HOST: edgex-support-scheduler
      DATABASES_PRIMARY_HOST: edgex-redis
      EDGEX_SECURITY_SECRET_STORE: "false"
      MESSAGEQUEUE_HOST: edgex-redis
      REGISTRY_HOST: edgex-core-consul
      SERVICE_HOST: edgex-support-notifications
    hostname: edgex-support-notifications
    image: openyurt/support-notifications:2.3.0
    networks:
      edgex-network: {}
    ports:
      - 0.0.0.0:59860:59860/tcp
    read_only: true
    restart: always
    security_opt:
      - no-new-privileges:true
    user: 2002:2001
  rulesengine:
    container_name: edgex-kuiper
    depends_on:
      - database
    environment:
      CONNECTION__EDGEX__REDISMSGBUS__PORT: 6379
      CONNECTION__EDGEX__REDISMSGBUS__PROTOCOL: redis
      CONNECTION__EDGEX__REDISMSGBUS__SERVER: edgex-redis
      CONNECTION__EDGEX__REDISMSGBUS__TYPE: redis
      EDGEX__DEFAULT__PORT: 6379
      EDGEX__DEFAULT__PROTOCOL: redis
      EDGEX__DEFAULT__SERVER: edgex-redis
      EDGEX__DEFAULT__TOPIC: rules-events
      EDGEX__DEFAULT__TYPE: redis
      KUIPER__BASIC__CONSOLELOG: "true"
      KUIPER__BASIC__RESTPORT: 59720
    hostname: edgex-kuiper
    image: lfedge/ekuiper:1.7.1-alpine
    networks:
      edgex-network: {}
    ports:
      - 0.0.0.0:59720:59720/tcp
    read_only: true
    restart: always
    security_opt:
      - no-new-privileges:true
    user: kuiper:kuiper
    volumes:
      - kuiper-data:/kuiper/data:z
  scheduler:
    container_name: edgex-support-scheduler
    depends_on:
      - consul
      - database
    environment:
      CLIENTS_CORE_COMMAND_HOST: edgex-core-command
      CLIENTS_CORE_DATA_HOST: edgex-core-data
      CLIENTS_CORE_METADATA_HOST: edgex-core-metadata
      CLIENTS_SUPPORT_NOTIFICATIONS_HOST: edgex-support-notifications
      CLIENTS_SUPPORT_SCHEDULER_HOST: edgex-support-scheduler
      DATABASES_PRIMARY_HOST: edgex-redis
      EDGEX_SECURITY_SECRET_STORE: "false"
      INTERVALACTIONS_SCRUBAGED_HOST: edgex-core-data
      INTERVALACTIONS_SCRUBPUSHED_HOST: edgex-core-data
      MESSAGEQUEUE_HOST: edgex-redis
      REGISTRY_HOST: edgex-core-consul
      SERVICE_HOST: edgex-support-scheduler
    hostname: edgex-support-scheduler
    image: openyurt/support-scheduler:2.3.0
    networks:
      edgex-network: {}
    ports:
      - 0.0.0.0:59861:59861/tcp
    read_only: true
    restart: always
    security_opt:
      - no-new-privileges:true
    user: 2002:2001
  system:
    container_name: edgex-sys-mgmt-agent
    depends_on:
      - command
      - consul
      - data
      - metadata
      - notifications
      - scheduler
    environment:
      CLIENTS_CORE_COMMAND_HOST: edgex-core-command
      CLIENTS_CORE_DATA_HOST: edgex-core-data
      CLIENTS_CORE_METADATA_HOST: edgex-core-metadata
      CLIENTS_SUPPORT_NOTIFICATIONS_HOST: edgex-support-notifications
      CLIENTS_SUPPORT_SCHEDULER_HOST: edgex-support-scheduler
      DATABASES_PRIMARY_HOST: edgex-redis
      EDGEX_SECURITY_SECRET_STORE: "false"
      EXECUTORPATH: /sys-mgmt-executor
      MESSAGEQUEUE_HOST: edgex-redis
      METRICSMECHANISM: executor
      REGISTRY_HOST: edgex-core-consul
      SERVICE_HOST: edgex-sys-mgmt-agent
    hostname: edgex-sys-mgmt-agent
    image: openyurt/sys-mgmt-agent:2.3.0
    networks:
      edgex-network: {}
    ports:
      - 0.0.0.0:58890:58890/tcp
    read_only: true
    restart: always
    security_opt:
      - label:disable
      - no-new-privileges:true
    user: root:root
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:z
  ui:
    container_name: edgex-ui-go
    environment:
      EDGEX_SECURITY_SECRET_STORE: "false"
      SERVICE_HOST: edgex-ui-go
    hostname: edgex-ui-go
    image: openyurt/edgex-ui:2.3.0
    networks:
      edgex-network: {}
    ports:
      - 4000:4000/tcp
    read_only: true
    restart: always
    security_opt:
      - no-new-privileges:true
    user: 2002:2001
version: '3.7'
volumes:
  consul-config: {}
  consul-data: {}
  db-data: {}
  kuiper-data: {}