# /******************************************************************************* # * Copyright 2020 Redis Labs Inc. # * Copyright 2020 Intel Corporation. # * # * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except # * in compliance with the License. You may obtain a copy of the License at # * # * http://www.apache.org/licenses/LICENSE-2.0 # * # * Unless required by applicable law or agreed to in writing, software distributed under the License # * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express # * or implied. See the License for the specific language governing permissions and limitations under # * the License. # * # * @author: Jim White, Dell # * @author: Andre Srinivasan, Redis Labs # * @author: Leonard Goodell, Intel # * EdgeX Foundry, Geneva, version 1.2.0 # * added: May 14, 2020 # * # * @author: Bindu S Rao, IoTech # * Device Grove update for Devkit # * added: Oct 05, 2020 # *******************************************************************************/ # NOTE: this Docker Compose file does not contain the security services - namely the API Gateway # and Secret Store version: '3.4' # all common shared environment variables defined here: x-common-env-variables: &common-variables EDGEX_SECURITY_SECRET_STORE: "false" Registry_Host: edgex-core-consul Clients_CoreData_Host: edgex-core-data Clients_Data_Host: edgex-core-data # For device Services Clients_Notifications_Host: edgex-support-notifications Clients_Metadata_Host: edgex-core-metadata Clients_Command_Host: edgex-core-command Clients_Scheduler_Host: edgex-support-scheduler Clients_RulesEngine_Host: edgex-kuiper Clients_VirtualDevice_Host: edgex-device-virtual Databases_Primary_Host: edgex-redis # Required in case old configuration from previous release used. # Change to "true" if re-enabling logging service for remote logging Logging_EnableRemote: "false" # Clients_Logging_Host: edgex-support-logging # un-comment if re-enabling logging service for remote logging volumes: db-data: log-data: consul-config: consul-data: services: consul: image: edgexfoundry/docker-edgex-consul-arm64:1.2.0 ports: - "127.0.0.1:8400:8400" - "127.0.0.1:8500:8500" container_name: edgex-core-consul hostname: edgex-core-consul networks: - edgex-network volumes: - consul-config:/consul/config:z - consul-data:/consul/data:z environment: - EDGEX_DB=redis - EDGEX_SECURE=false redis: image: arm64v8/redis:5.0.8-alpine ports: - "127.0.0.1:6379:6379" container_name: edgex-redis hostname: edgex-redis networks: - edgex-network environment: <<: *common-variables volumes: - db-data:/data:z # The logging service has been deprecated in Geneva release and will be removed in the Hanoi release. # All services are configure to send logging to STDOUT, i.e. not remote which requires this logging service # If you still must use remote logging, un-comment the block below, all the related depends that have been commented out # and the related global override that are commented out at the top. # # logging: # image: edgexfoundry/docker-support-logging-go-arm64:1.2.1 # ports: # - "127.0.0.1:48061:48061" # container_name: edgex-support-logging # hostname: edgex-support-logging # networks: # - edgex-network # environment: # <<: *common-variables # Service_Host: edgex-support-logging # Writable_Persistence: file # Databases_Primary_Type: file # Logging_EnableRemote: "false" # depends_on: # - consul system: image: edgexfoundry/docker-sys-mgmt-agent-go-arm64:1.2.1 ports: - "127.0.0.1:48090:48090" container_name: edgex-sys-mgmt-agent hostname: edgex-sys-mgmt-agent networks: - edgex-network environment: <<: *common-variables Service_Host: edgex-sys-mgmt-agent ExecutorPath: /sys-mgmt-executor MetricsMechanism: executor volumes: - /var/run/docker.sock:/var/run/docker.sock:z depends_on: - consul # - logging # uncomment if re-enabled remote logging - scheduler - notifications - metadata - data - command notifications: image: edgexfoundry/docker-support-notifications-go-arm64:1.2.1 ports: - "127.0.0.1:48060:48060" container_name: edgex-support-notifications hostname: edgex-support-notifications networks: - edgex-network environment: <<: *common-variables Service_Host: edgex-support-notifications depends_on: - consul # - logging # uncomment if re-enabled remote logging - redis metadata: image: edgexfoundry/docker-core-metadata-go-arm64:1.2.1 ports: - "127.0.0.1:48081:48081" container_name: edgex-core-metadata hostname: edgex-core-metadata networks: - edgex-network environment: <<: *common-variables Service_Host: edgex-core-metadata Service_Timeout: "20000" Notifications_Sender: edgex-core-metadata depends_on: - consul # - logging # uncomment if re-enabled remote logging - redis - notifications data: image: edgexfoundry/docker-core-data-go-arm64:1.2.1 ports: - "127.0.0.1:48080:48080" - "127.0.0.1:5563:5563" container_name: edgex-core-data hostname: edgex-core-data networks: - edgex-network environment: <<: *common-variables Service_Host: edgex-core-data depends_on: - consul # - logging # uncomment if re-enabled remote logging - redis - metadata command: image: edgexfoundry/docker-core-command-go-arm64:1.2.1 ports: - "127.0.0.1:48082:48082" container_name: edgex-core-command hostname: edgex-core-command networks: - edgex-network environment: <<: *common-variables Service_Host: edgex-core-command depends_on: - consul # - logging # uncomment if re-enabled remote logging - redis - metadata scheduler: image: edgexfoundry/docker-support-scheduler-go-arm64:1.2.1 ports: - "127.0.0.1:48085:48085" container_name: edgex-support-scheduler hostname: edgex-support-scheduler networks: - edgex-network environment: <<: *common-variables Service_Host: edgex-support-scheduler IntervalActions_ScrubPushed_Host: edgex-core-data IntervalActions_ScrubAged_Host: edgex-core-data depends_on: - consul # - logging # uncomment if re-enabled remote logging - redis mqtt-broker: image: eclipse-mosquitto:1.6 container_name: mqtt-broker hostname: mqtt-broker networks: - edgex-network ports: - "127.0.0.1:1883:1883" app-service-rules: # image: edgexfoundry/docker-app-service-configurable-arm64:1.2.0 image: nexus3.edgexfoundry.org:10004/docker-app-service-configurable-arm64:1.2.1-dev.14 ports: - "127.0.0.1:48100:48100" container_name: edgex-app-service-configurable-rules hostname: edgex-app-service-configurable-rules networks: - edgex-network environment: <<: *common-variables edgex_profile: mqtt-export Service_Host: edgex-app-service-configurable-rules Service_Port: 48100 MessageBus_SubscribeHost_Host: edgex-core-data Binding_PublishTopic: events Writable.Pipeline.ExecutionOrder: "TransformToJSON, MQTTSecretSend, MarkAsPushed" Writable.Pipeline.Functions.FilterByDeviceName.Parameters.DeviceNames: "GroveDevice" Writable.Pipeline.Functions.MQTTSend.Addressable.Address: "mqtt-broker" Writable.Pipeline.Functions.MQTTSend.Addressable.Port: 1883 Writable.Pipeline.Functions.MQTTSecretSend.Parameters.brokeraddress: "tcp://mqtt-broker:1883" Writable.Pipeline.Functions.MQTTSecretSend.Parameters.topic: "MQTT_DeviceGrove" Writable.Pipeline.Functions.MQTTSecretSend.Parameters.clientid: "MQTT_DeviceGrove" Writable.Pipeline.Functions.MQTTSecretSend.Parameters.secretpath: "mqtt" Writable.Pipeline.Functions.MQTTSecretSend.Parameters.authmode: "none" Writable.Pipeline.Functions.MQTTSecretSend.Parameters.qos: "0" depends_on: - consul # - logging # uncomment if re-enabled remote logging - data rulesengine: image: emqx/kuiper:0.4.2-alpine ports: - "127.0.0.1:48075:48075" - "127.0.0.1:20498:20498" container_name: edgex-kuiper hostname: edgex-kuiper networks: - edgex-network environment: # KUIPER_DEBUG: "true" KUIPER_CONSOLE_LOG: "true" KUIPER_REST_PORT: 48075 EDGEX_SERVER: edgex-app-service-configurable-rules EDGEX_SERVICE_SERVER: http://edgex-core-data:48080 EDGEX_TOPIC: events EDGEX_PROTOCOL: tcp EDGEX_PORT: 5566 depends_on: - app-service-rules # Support RulesEngine has been deprecated in the Geneva (1.2.0) release # If still required, simply uncomment the block below and comment out the block above. # # rulesengine: # image: edgexfoundry/docker-support-rulesengine-arm64:1.2.1 # ports: # - "127.0.0.1:48075:48075" # container_name: edgex-support-rulesengine # hostname: edgex-support-rulesengine # networks: # - edgex-network # depends_on: # - app-service-rules ################################################################# # Device Services ################################################################# device-grove: image: edgexfoundry/docker-device-grove-c-arm64:1.2.1 ports: - "127.0.0.1:49992:49992" devices: - /dev/i2c-1 container_name: edgex-device-grove hostname: edgex-device-grove networks: - edgex-network volumes: - db-data:/data/db - log-data:/edgex/logs - consul-config:/consul/config - consul-data:/consul/data depends_on: - data - command device-virtual: image: edgexfoundry/docker-device-virtual-go-arm64:1.2.2 ports: - "127.0.0.1:49990:49990" container_name: edgex-device-virtual hostname: edgex-device-virtual networks: - edgex-network environment: <<: *common-variables Service_Host: edgex-device-virtual depends_on: - consul # - logging # uncomment if re-enabled remote logging - data - metadata device-rest: image: edgexfoundry/docker-device-rest-go-arm64:1.1.1 ports: - "127.0.0.1:49986:49986" container_name: edgex-device-rest hostname: edgex-device-rest networks: - edgex-network environment: <<: *common-variables Service_Host: edgex-device-rest depends_on: - data - command # - logging # uncomment if re-enabled remote logging # device-random: # image: edgexfoundry/docker-device-random-go-arm64:1.2.1 # ports: # - "127.0.0.1:49988:49988" # container_name: edgex-device-random # hostname: edgex-device-random # networks: # - edgex-network # environment: # <<: *common-variables # Service_Host: edgex-device-random # depends_on: # - data # - command # # device-mqtt: # image: edgexfoundry/docker-device-mqtt-go-arm64:1.2.1 # ports: # - "127.0.0.1:49982:49982" # container_name: edgex-device-mqtt # hostname: edgex-device-mqtt # networks: # - edgex-network # environment: # <<: *common-variables # Service_Host: edgex-device-mqtt # depends_on: # - data # - command # # device-modbus: # image: edgexfoundry/docker-device-modbus-go-arm64:1.2.1 # ports: # - "127.0.0.1:49991:49991" # container_name: edgex-device-modbus # hostname: edgex-device-modbus # networks: # - edgex-network # environment: # <<: *common-variables # Service_Host: edgex-device-modbus # depends_on: # - data # - command # # device-snmp: # image: edgexfoundry/docker-device-snmp-go-arm64:1.2.1 # ports: # - "127.0.0.1:49993:49993" # container_name: edgex-device-snmp # hostname: edgex-device-snmp # networks: # - edgex-network # environment: # <<: *common-variables # Service_Host: edgex-device-snmp # depends_on: # - data # - command networks: edgex-network: driver: "bridge"