Stream Host Docker
Introduction
This guide covers the XMPro Stream Host Docker image available from version 4.4.19 onwards. The latest Stream Host images have been redesigned for improved security and usability.
Prerequisites
Software Requirements
A container runtime such as Docker Desktop.
Hardware Requirements
Component | Small | Medium | Large |
---|---|---|---|
Stream Host | 1 CPU, 4 GB RAM | 2 CPU, 8GB RAM | 4 CPU, 16GB RAM |
Note
Actual resource requirements depend on your specific data streams. Monitor performance and adjust resources accordingly.
Configuration
Essential Environment Variables
Key | Required | Description |
---|---|---|
xm__xmpro__Gateway__Id | Optional | Unique GUID identifier for this Stream Host instance. Default: A new GUID |
xm__xmpro__Gateway__Name | Optional | Display name in Data Stream Designer. Default: "[Image-Version]-[Gateway Id]", e.g. "alpine3.21-python3.12-3bd462d4-4f1f-4cda-b6c5-d02f986beb6f" |
xm__xmpro__Gateway__CollectionId | Required | ID of your Collection (available in Data Stream Designer) |
xm__xmpro__Gateway__Secret | Required | Secret key of your Collection (available in Data Stream Designer) |
xm__xmpro__Gateway__ServerUrl | Required | The server URL for where Data Stream Designer is hosted. E.g. "https://dsserver/datastreamdesigner/". Please note that this URL needs to end in a forward slash. |
xm__xmpro__Gateway__Rank | Optional | An integer, by default is "0". See Stream Host Rank for further details. |
These settings can be found in Data Stream Designer:
Docker Repository
Below is the XMPro Docker Stream Host repository.
xmpro.azurecr.io/stream-host
Image Variants
Version Tagging
All images are tagged with their version number. For example:
xmpro.azurecr.io/stream-host:4.4.19
The latest
tag points to the most recent release:
xmpro.azurecr.io/stream-host:latest
Warning
Using the latest
tag caches the image locally. For guaranteed latest version, specify the exact version number or re-pull the image.
Available Variants
A Stream Host running a Data Stream must provide the capabilities to run each Agents in the Data Stream. Choose your image depending on the capabilities that are required.
Image Name | Description |
---|---|
xmpro.azurecr.io/stream-host:4.4.19-bookworm-slim |
Debian (Default) |
xmpro.azurecr.io/stream-host:4.4.19-bookworm-slim-python3.12 |
Debian with Python |
xmpro.azurecr.io/stream-host:4.4.19-alpine3.21 |
Alpine |
Choosing the Right Image
- Alpine-based images offer a smaller footprint, ideal for environments where size matters
- Debian-based images (Bookworm Slim) provide more comprehensive tools and libraries for general use
- Python-enabled images come with Python pre-installed for running Python-based Agents and Connectors
Python Package Installation
For Python-enabled images, you can install packages using:
Either a requirements.txt
file,
pandas==2.1.4
numpy==1.26.3
Or the SH_PIP_MODULES
environment variable:
SH_PIP_MODULES = pandas==2.1.4 numpy==1.26.3
Requirements.txt Location
Specify the location of your requirements.txt
file using the PIP_REQUIREMENTS_PATH
environment variable:
# Powershell and Bash Terminal
-v "<path_to_your_solution>:/opt/"
-e PIP_REQUIREMENTS_PATH="/opt"
# Docker compose
- PIP_REQUIREMENTS_PATH=/opt
volumes:
- "<path_to_your_solution>:/opt/"
Note
If not specified, the system will look for requirements.txt
in the default path /app
.
Installing System Dependencies
To install additional system packages (APK/APT), you can install it using environment variables:
ADDITIONAL_INSTALLS=git
Deployment
Docker
Replace <values>
with your actual configuration settings.
PowerShell
docker run `
--name stream-host `
--restart on-failure `
-e "XM__XMPRO__GATEWAY__COLLECTIONID=<Collection ID>" `
-e "XM__XMPRO__GATEWAY__SECRET=<Collection Secret>" `
-e "XM__XMPRO__GATEWAY__SERVERURL=<Server URL>" `
xmpro.azurecr.io/stream-host:latest
With optional environment variables:
docker run `
--name stream-host `
--restart on-failure `
--pull always `
-e "XM__XMPRO__GATEWAY__COLLECTIONID=<Collection ID>" `
-e "XM__XMPRO__GATEWAY__SECRET=<Collection Secret>" `
-e "XM__XMPRO__GATEWAY__SERVERURL=<Server URL>" `
-e "XM__XMPRO__GATEWAY__ID=<Stream Host Id>" `
-e "XM__XMPRO__GATEWAY__NAME=<Stream Host Name>" `
-e "XM__XMPRO__GATEWAY__RANK=<Stream Host Rank>" `
-e "SH_PIP_MODULES=pandas scikit-learn numpy" `
-v "<path_to_your_solution>:/opt/" `
-e "PIP_REQUIREMENTS_PATH=/opt" `
-e "ADDITIONAL_INSTALLS=git" `
xmpro.azurecr.io/stream-host:latest
Note
Remove optional variables that are NOT needed.
Bash/Terminal
docker run \
--name stream-host \
--restart on-failure \
-e "XM__XMPRO__GATEWAY__COLLECTIONID=<Collection ID>" \
-e "XM__XMPRO__GATEWAY__SECRET=<Collection Secret>" \
-e "XM__XMPRO__GATEWAY__SERVERURL=<Server URL>" \
xmpro.azurecr.io/stream-host:latest
With optional environment variables
MSYS_NO_PATHCONV=1 docker run \
--name stream-host \
--restart on-failure \
--pull always \
-e "XM__XMPRO__GATEWAY__COLLECTIONID=<Collection ID>" \
-e "XM__XMPRO__GATEWAY__SECRET=<Collection Secret>" \
-e "XM__XMPRO__GATEWAY__SERVERURL=<Server URL>" \
-e "XM__XMPRO__GATEWAY__ID=<Stream Host Id>" \
-e "XM__XMPRO__GATEWAY__NAME=<Stream Host Name>" \
-e "XM__XMPRO__GATEWAY__RANK=<Stream Host Rank>" \
-e "SH_PIP_MODULES=pandas scikit-learn numpy" \
-v "<path_to_your_solution>:/opt/" \
-e "PIP_REQUIREMENTS_PATH=/opt" \
-e "ADDITIONAL_INSTALLS=git" \
xmpro.azurecr.io/stream-host:latest
Note
Remove optional variables that are NOT needed.
Docker Compose
Create a compose.yaml
file in your working directory:
services:
stream-host:
image: xmpro.azurecr.io/stream-host:latest
pull_policy: always
container_name: 'stream-host'
environment:
- XM__XMPRO__GATEWAY__COLLECTIONID=<Collection ID>
- XM__XMPRO__GATEWAY__SECRET=<Collection Secret>
- XM__XMPRO__GATEWAY__SERVERURL=<Server URL>
restart: on-failure
With optional environment variables
services:
stream-host:
image: xmpro.azurecr.io/stream-host:latest
pull_policy: always
container_name: 'stream-host'
environment:
- XM__XMPRO__GATEWAY__COLLECTIONID=<Collection ID>
- XM__XMPRO__GATEWAY__SECRET=<Collection Secret>
- XM__XMPRO__GATEWAY__SERVERURL=<Server URL>
# Optional: Uncomment if needed
# - XM__XMPRO__GATEWAY__ID=<Stream Host Id>
# - XM__XMPRO__GATEWAY__NAME=<Stream Host Name>
# - XM__XMPRO__GATEWAY__RANK=<Stream Host Rank>
# - SH_PIP_MODULES=pandas scikit-learn numpy
# - PIP_REQUIREMENTS_PATH=/opt
# - ADDITIONAL_INSTALLS=git
# volumes:
# - "<path_to_your_solution>:/opt/"
restart: on-failure
Replace <values>
with your actual configuration settings.
Managing Your Docker Compose Container
Start the Stream Host:
docker-compose up -d stream-host
Stop the Stream Host:
docker-compose down
Note
For more information on Docker Compose, see the Docker Compose Overview.
Your Stream Host installation is now complete.
Last modified: July 16, 2025