We created this image to ease deployment of Apache Storm. More related main.resources:
- Our tutorial on how to use Storm with Docker Swarm
- the baqend/storm on Docker Hub
- the the baqend/storm on GitHub
The Docker image launches Apache Storm. By default, the storm.local.hostname
property is set already, but you have to provide all other arguments that you would normally provide.
Storm allows you to provide any property via command line arguments like this:
bin/storm ui \
-c storm.local.hostname="nimbus"
You are not restricted to strings, but can also provide integer lists:
bin/storm supervisor \
-c supervisor.slots.ports="[6700,6701]"
Or lists of strings:
bin/storm supervisor \
-c storm.zookeeper.servers="[\"zk1\",\"zk2\",\"zk3\"]"
You can look up all the parameters in the source code.
This image also lets you specify the ZooKeeper servers with a simple list (e.g. "zk1,zk2,zk3"
) instead of the more verbose format Storm requires (e.g. "[\"zk1\",\"zk2\",\"zk3\"]"
).
So if your ZooKeeper cluster is made up of zk1
, zk2
and zk3
, you can tell Storm to use this cluster by providing the following Docker environment variable:
-e STORM_ZOOKEEPER_SERVERS="zk1,zk2,zk3"
Internally, this is passed to Storm as
-c storm.zookeeper.servers="[\"zk1\",\"zk2\",\"zk3\"]"
The baqend/storm Docker image uses the following default values that can be overridden by providing the corresponding arguments in the run
statement (e.g. -c nimbus.seeds="[\"nimbus1\",\"nimbus2\"]"
):
-c nimbus.seeds="[\"nimbus\"]"
: is also overridden bynimbus.host
(depreciated since 1.0.0)-c storm.local.hostname=<CONTAINER-ID>
: by default, the image assigns the valuenimbus
whennimbus
is provided as argument; the docker container ID is used as hostname else-c supervisor.slots.ports="[6700,6701,6702,6703]"
: only when thesupervisor
argument is provided
In consequence, only the ZooKeeper servers and the role argument (either ui
, nimbus
or supervisor
) have to be provided in a docker run
statement.
For an example of how we use this image, also see our tutorial on how to use Storm with Docker Swarm.