LoginSignup
5
5

More than 5 years have passed since last update.

StackStormをDockerで起動する

Last updated at Posted at 2016-08-29

StackStormをDockerで起動する手順です。
ただ、現状Workaroundになっており、今後はもっと手順が簡単になると思われます。

そのworkaround手順を含めた暫定的なリポジトリを公開します。使い方はREADME.mdをご覧ください。
また、公式に加えてst2web(GUI版)を起動するようにしています。

これ以降の手順は、公式リポジトリを利用する場合の手順になります。


ポイントは1つ、「急いでdocker-compose upするな」ということだけです。

実際に以下をcloneしてから使います。ただ、ここのREADMEの手順には従わないでください。

現状では、以下の流れに従ってやっていけば大丈夫です。

手順

ベースイメージを作る

StackStormは様々なコンポーネントに分かれていますが、それらは全てベースとなるst2というコンテナを元にして、単に環境変数で振る舞いを変えているに過ぎません。
まずは、このst2コンテナを作ります。

上記リポジトリのREADMEにいろいろ書いてありますが、惑わされてはいけません。その通りにやると動きません
以下のようにします。

$ docker build --build-arg ST2_VERSION="1.6.0-5" --build-arg ST2_REPO="staging-stable" -t st2 stackstorm/

ポイントは、ST2_REPO="staging-stable"を与えているところです。上記リポジトリREADMEだとそれを指定していませんが、指定しないと別のところにパッケージを取りに行って死にます。

ST2_REPOを指定しない場合
$ docker build --build-arg ST2_VERSION="1.6.0-5" -t st2 stackstorm/
(snip)
Step 8 : ADD ${ST2_PACKAGE} /tmp/st2_${ST2_VERSION}_amd64.deb
Got HTTP status code >= 400: 404 Not Found

また、それすらやらずにここでいきなりdocker-compose upとかやると、まず死にます。

いきなり起動した場合
$ docker-compose up

Building data
Step 1 : FROM st2

Pulling repository docker.io/library/st2

ERROR: Service 'data' failed to build: Error: image library/st2:latest not found

各コンポーネント用のコンテナを作る

この後に即docker-compose upをやると、各コンテナはhub側に取りに行ってしまいます。
そこで、まずbuildして各コンポーネント用のイメージを作ります。

コンポーネント用のイメージ作成
CONTAINERS="st2actionrunner st2api st2auth st2stream st2exporter st2notifier st2resultstracker st2rulesengine st2sensorcontainer st2garbagecollector"
for container in `echo $CONTAINERS`; do
 docker build -t stackstorm/${container}:latest ${container}
done

要はぐるぐる回しているだけです。

これをやらずにdocker-compose up すると、別の所にイメージを取りに行き、結果的にapiコンテナが起動しません。

イメージを作らずにcomposeを起動するとエラーになる
api_1               | /etc/st2/st2.conf: FAILED
api_1               | md5sum: WARNING: 1 computed checksum did NOT match
api_1               | /opt/stackstorm/st2/bin/python: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.15' not found (required by /opt/stackstorm/st2/bin/python)
api_1               | /opt/stackstorm/st2/bin/python: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.14' not found (required by /opt/stackstorm/st2/bin/python)

起動する

ここまでくれば、あとは起動します。

$ docker-compose up -d
$ docker-compose ps
              Name                             Command               State                     Ports
---------------------------------------------------------------------------------------------------------------------
st2dockerfiles_actionrunner_1       /entrypoint.sh                   Up
st2dockerfiles_api_1                /entrypoint.sh                   Up       9101/tcp
st2dockerfiles_auth_1               /entrypoint.sh                   Up       9100/tcp
st2dockerfiles_client_1             /entrypoint.sh st2               Exit 2
st2dockerfiles_data_1               /entrypoint.sh /bin/sh -c  ...   Exit 0
st2dockerfiles_exporter_1           /entrypoint.sh                   Exit 1
st2dockerfiles_garbagecollector_1   /entrypoint.sh                   Up
st2dockerfiles_mongo_1              /entrypoint.sh mongod            Up       27017/tcp
st2dockerfiles_notifier_1           /entrypoint.sh                   Up
st2dockerfiles_rabbitmq_1           docker-entrypoint.sh rabbi ...   Up       25672/tcp, 4369/tcp, 5671/tcp, 5672/tcp
st2dockerfiles_resultstracker_1     /entrypoint.sh                   Up
st2dockerfiles_rulesengine_1        /entrypoint.sh                   Up
st2dockerfiles_sensorcontainer_1    /entrypoint.sh                   Up
st2dockerfiles_stream_1             /entrypoint.sh                   Exit 1

概ね上記のようになっているはずです。幾つか落ちているものもありますが、問題ないものもあります。

  • data : 初回起動時にデータを登録するためだけのコンテナです。一度登録したらいらないので、 exit 0で問題ありません。
  • client : この後、StackStormに対してコマンドを実行するためのコンテナです。コマンドは実行したら結果が返ってきて終了となるので、普段は落ちていても問題ありません。
  • streamexporter : なんでしょう…これ…

StackStormを使う

あとはclientコンテナに対してst2コマンドを発行すれば、好きなように遊ぶことができます。

各st2コマンドを実行する
$ docker-compose run client st2 action list --pack=core
Starting st2dockerfiles_data_1
+-------------------+------+-------------------------------------------------------------------+
| ref               | pack | description                                                       |
+-------------------+------+-------------------------------------------------------------------+
| core.announcement | core | Action that broadcasts the announcement to all stream consumers.  |
| core.http         | core | Action that performs an http request.                             |
| core.local        | core | Action that executes an arbitrary Linux command on the localhost. |
| core.local_sudo   | core | Action that executes an arbitrary Linux command on the localhost. |
| core.noop         | core | Action that does nothing                                          |
| core.remote       | core | Action to execute arbitrary linux command remotely.               |
| core.remote_sudo  | core | Action to execute arbitrary linux command remotely.               |
| core.sendmail     | core | This sends an email                                               |
| core.windows_cmd  | core | Action to execute arbitrary Windows command remotely.             |
+-------------------+------+-------------------------------------------------------------------+

注意

WebUIはありません。以下の途中にもありますが、別途そのようなコンテナを作る必要があります。

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5