# WARNING: Do not deploy this tutorial configuration directly to a production environment # # The tutorial docker-compose files have not been written for production deployment and will not # scale. A proper architecture has been sacrificed to keep the narrative focused on the learning # goals, they are just used to deploy everything onto a single Docker machine. All FIWARE components # are running at full debug and extra ports have been exposed to allow for direct calls to services. # They also contain various obvious security flaws - passwords in plain text, no load balancing, # no use of HTTPS and so on. # # This is all to avoid the need of multiple machines, generating certificates, encrypting secrets # and so on, purely so that a single docker-compose file can be read as an example to build on, # not use directly. # # When deploying to a production environment, please refer to the Helm Repository # for FIWARE Components in order to scale up to a proper architecture: # # see: https://github.com/FIWARE/helm-charts/ # services: # Orion is an NGSI-v2 context broker orion-v2: labels: org.fiware: 'tutorial' image: quay.io/fiware/orion:${ORION_VERSION} hostname: orion container_name: fiware-orion depends_on: - mongo-db networks: - default expose: - "${ORION_PORT}" ports: - "${ORION_PORT}:${ORION_PORT}" # localhost:1026 command: -dbURI mongodb://mongo-db -logLevel DEBUG healthcheck: test: curl --fail -s http://orion:${ORION_PORT}/version || exit 1 interval: 5s # Tutorial acts as a series of dummy IoT Sensors over HTTP tutorial: labels: org.fiware: 'tutorial' image: quay.io/fiware/tutorials.context-provider hostname: iot-sensors container_name: fiware-tutorial networks: default: aliases: - tutorial - context-provider expose: - "${TUTORIAL_APP_PORT}" - "${TUTORIAL_DUMMY_DEVICE_PORT}" ports: - "${TUTORIAL_APP_PORT}:${TUTORIAL_APP_PORT}" # localhost:3000 - "${TUTORIAL_DUMMY_DEVICE_PORT}:${TUTORIAL_DUMMY_DEVICE_PORT}" # localhost:3001 environment: - "MONGO_URL=mongodb://mongo-db:27017" - "DEBUG=tutorial:*" - "WEB_APP_PORT=${TUTORIAL_APP_PORT}" # Port used by the content provider proxy and web-app for viewing data - "IOTA_HTTP_HOST=iot-agent" #This is where the UltraLight IoT Agent will be listening in the next tutorial - "IOTA_HTTP_PORT=${IOTA_SOUTH_PORT}" # Port used by the IoT Agent to be connected in the next tutorial - "DUMMY_DEVICES_PORT=${TUTORIAL_DUMMY_DEVICE_PORT}" # Port used by the dummy IOT devices to receive commands - "DUMMY_DEVICES_TRANSPORT=HTTP" # Default transport used by dummy Io devices - "DUMMY_DEVICES_API_KEY=4jggokgpepnvsb2uv4s40d59ov" # API Kye used by the dummy IOT devices in the next tutorial - "CONTEXT_BROKER=http://orion:${ORION_PORT}/v2" # URL of the context broker to update context - "OPENWEATHERMAP_KEY_ID=" - "TWITTER_CONSUMER_KEY=" - "TWITTER_CONSUMER_SECRET=" # Database mongo-db: labels: org.fiware: 'tutorial' image: mongo:${MONGO_DB_VERSION} hostname: mongo-db container_name: db-mongo expose: - "${MONGO_DB_PORT}" ports: - "${MONGO_DB_PORT}:${MONGO_DB_PORT}" # localhost:27017 networks: - default volumes: - mongo-db:/data healthcheck: test: ["CMD","mongosh", "--eval", "db.adminCommand('ping')"] interval: 5s timeout: 5s retries: 3 start_period: 5s networks: default: labels: org.fiware: 'tutorial' ipam: config: - subnet: 172.18.1.0/24 volumes: mongo-db: ~