Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

This document will describe the process of launching the EdgeXFoundry services with docker-compose.

Prerequisites:

  1. Docker-engine v17.06.0+ to support compose file format v3.4 for Fuji release
  2. Docker-compose version 1.25+

    1. Unsure of minimal version, but docker-compose should be capable of using docker-compose file version 3.4 for fuji release of EdgeXFoundry

Setup Process

  1. Obtain the compose files for EdgeXFoundry
    1. git clone https://github.com/edgexfoundry/developer-scripts
  2. Navigate to the compose files for the fuji release
    1. cd developer-scripts/releases/fuji/compose-files
  3. Link the no-security variant to a docker-compose.yaml file for simple operation
    1. ln -s ./docker-compose-fuji-no-secty.yml ./docker-compose.yml
  4. Edit the docker-compose.yml to uncomment the device-random section
    1. "device-random" section at about line 335-350
  5. Start up the containers in background mode with docker-compose
    1. sudo docker-compose up -d


Script Samples for interacting with EdgeXFoundry

#!/bin/bash
# file: ping_edgex_services.sh
# description: ping all services in EdgeXFoundry containers
# reference: https://nexus.edgexfoundry.org/content/sites/docs/staging/master/docs/_build/html/Ch-GettingStartedUsers.html#checking-the-status-of-edgex-foundry
for PORT in {48095,48100,48082,48080,48081,49990,49988,27017,48061,48060,48075,48085,48090,4000}; do
echo "Checking localhost:${PORT} ... Response: \"$(curl -s http://localhost:${PORT}/api/v1/ping )\""
done

#!/bin/bash
# file: get_random_data.sh
# description: script will use curl to pull random integers from the edgex-device-random service
# references:
# https://nexus.edgexfoundry.org/content/sites/docs/staging/master/docs/_build/html/Ch-ExamplesVirtualDeviceService.html
# https://nexus.edgexfoundry.org/content/sites/docs/staging/master/docs/_build/html/Ch-QuickStart.html#controlling-the-device
# pre: query the device-random service to get the IDs of the random-integer endpoints
RAND_INT_DEV="Random-Integer-Generator01"
RAND_INT_DEV_FILE="${RAND_INT_DEV}.json"
CORE_COMMAND_PORT=48082
curl -s http://localhost:${CORE_COMMAND_PORT}/api/v1/device/name/${RAND_INT_DEV} > $RAND_INT_DEV_FILE
#RAND_INT_DEVICE_JSON=$(curl -s http://localhost:${CORE_COMMAND_PORT}/api/v1/device/name/${RAND_INT_DEV})

# CORE_DATA_PORT=48080

#for i in {0..2}; do
# cat $RAND_INT_DEV_FILE | jq ".commands[${i}].get.path" | tr -d '"'
# cat $RAND_INT_DEV_FILE | jq ".commands[${i}].get.url" | tr -d '"'
#done
# select URL for get commands
Int8_url=$( cat $RAND_INT_DEV_FILE | jq ".commands[0].get.url" | tr -d '"' | sed 's/edgex-core-command/localhost/g' )
Int16_url=$(cat $RAND_INT_DEV_FILE | jq ".commands[1].get.url" | tr -d '"' | sed 's/edgex-core-command/localhost/g' )
Int32_url=$(cat $RAND_INT_DEV_FILE | jq ".commands[2].get.url" | tr -d '"' | sed 's/edgex-core-command/localhost/g' )

# query device for random integers
Int8_output=$( curl -s ${Int8_url})
Int16_output=$(curl -s ${Int16_url})
Int32_output=$(curl -s ${Int32_url})

# pipe the output through jq to select fields like "value"
echo "Random Int8: $( echo $Int8_output | jq '.readings[0].value' | tr -d '"')"
echo "Random Int16: $(echo $Int16_output | jq '.readings[0].value' | tr -d '"')"
echo "Random Int32: $(echo $Int32_output | jq '.readings[0].value' | tr -d '"')"