Official StackStorm Docker Image is Here!

Apr 21, 2017
by Warren Van Winckel

StackStorm containers on Docker

At long last, the official StackStorm Docker image is available on Docker Hub! Now you can skip the installation hurdles and jump right into evaluating StackStorm, or building automations faster than ever.

Hello! I’m Warren, one of the newest members of the StackStorm team, and maintainer of the new StackStorm/st2-docker Github repo.

You’ve been asking for StackStorm as a Docker image for a long time. We’ve asked you to use our images, which have served us well internally for our package and build infrastructure. But you deserve something better. Something built especially for you, the user. Here it comes!

This official image is simple for quick evaluations; convenient for building automations, yet solid enough for light-to-medium production use.

We invited our community docker experts into the #docker channel on StackStorm Slack community (you’re welcome to join!) and we are thankful for everyone’s passionate input. Special thanks to Bruce Smith and Shu Sugimoto, who have their own implementations and ideas on how to build a docker image for StackStorm. These repositories helped us get going, and ensure we didn’t stray too far from what the community desired.

Why Docker? You know it already, but if you insist, I’ll state the obvious:

  • Runs consistently across instances, and various host operating systems.
  • Build images once, deploy same image to dev, staging or production.
  • Uses less resources than VM’s such as Vagrant, allowing for denser consolidation.
  • Decouple infrastructure requirements from the application environment.

Our current focus is on creating an image that is useful to perform an evaluation of StackStorm in the matter of a few minutes. By design, this image also makes it easy to develop and maintain packs. Let’s jump right in.

How To Use

To give it a quick try, clone st2-docker, and follow the samples in README.md.

  $ git clone https://github.com/stackstorm/st2-docker

Usage is expressed in the docker-compose.yml file for readability. You can run it as is, or translate to Kubernetes, Swarm Stack, or your favorite orchestration service definition format.

Here are some of the highlights of our StackStorm image:

  • Quick, consistent installation. If you’re just trying StackStorm for the first time, no more troubles like “It doesn’t install for me”. If you’re already using Docker, no heart burn on “oh gee, I need to Dockerize it” – it’s all done for you.
  • It’s ready to go with defaults, but can be configured to fit your needs; explore the Dockerfile to see what you can configure by passing the environment variables.
  • We map an additional pack directory to the host filesystem and refer to it in the StackStorm configuration (https://docs.stackstorm.com/packs.html#under-the-hood-pack-basics), making it convenient to use your favorite tools to write your StackStorm automations. System packs and the packs from exchange still install under /opt/stackstorm/packs inside the container.

The Future

This is just the beginning. We continue to rapidly improve the implementation and adapt to feedback.

There are many use cases for dockerized StackStorm, and we we know there’s no “one size fits all” solution. For instance, for heavy production loads, a multi-container solution might be a better fit. There are different options for placing Mistral. And for some, even a smaller all-in-one container may be desirable. This work is ongoing.

Are you more inclined to try StackStorm in a Docker container now that it is officially supported? Are there any use cases that we have not considered? We’ve created a #docker channel in our Slack community. That’s probably the best way to contact us, but no matter how you do, we’re looking forward to hearing your thoughts, suggestions, and concerns.

Strong opinions are welcome in the form of a PR. Please start submitting issues against st2-docker. You will have an influence on how things are implemented.

Let’s continue doing amazing things together!