Docker
statemachine
smc

State Machine CompilerのWebUI付きDockerコンテナの使い方

More than 3 years have passed since last update.


はじめに

State Machine Compilerは、複雑なStateMachineを簡単に生成してくれる便利ツールです。

ただし、JavaのInstallが必要だったり、図を出力しようとしたらGraphvizが必要だったり、割と準備が大変です。

そこで、SMCをWebから操作できるUIを付けたサービスを

http://goodparts.d.yumemi.jp/

に公開しているのですが、誰がメンテしているかわからないサービスを業務などで利用するのは気が引けると思います。

そこで、誰でもPrivateに使えるようにDockerに詰めて公開してあるので、その使い方について紹介します。


準備

対象システムにDockerをInstallしておきましょう。

今回試したversionは1.2.0になります。

それ以前のDockerでも多少コマンドは違うかもしれませんが、大抵動くと思います。


サービスの利用方法


起動方法

動作として、過去に変換したデータを保存する仕組みになっています。

その内容はsqliteファイルとして存在します。

その部分のみ dockerコンテナが再起動しても残しておきたいので、dockerのHost側のDirに配置されるようにします。

そのdocker host側のDirを /var/lib/smc とした場合、

以下のコマンドを実行することで、サービスが起動します。


start_service

% docker run -d -p 8000:8000 -p 9000:9000 -p 10022:22 -v /var/lib/smc:/application/GoodParts/mnt mokemokechicken/smc_service


ワンライナー!w Dockerすごい!!

ちなみに初回はネットワークから数GBのImageを取得するので時間がかかりますが、2回目以降は一瞬です。


注意1: 8000,9000番portを開けて下さい

<docker host>の8000と9000番 portにアクセスできる必要があります。

AWSなど使っている場合はportを開けるようにしてください。


注意2: Macでboot2dockerを使っている時

boot2dockerを使っている場合、 sqliteファイルが置かれる docker host の dir というのは、

Macのファイルシステムではなく、VirtualBox内のVMのファイルシステムになります。

boot2docker ssh などでVMにログインすると、確かにファイルがあることが確認できます。


アクセス方法

無事起動したら、ブラウザで http://<docker_host>:8000/ にアクセスします。

この <docker host> は、ブラウザからみたDocker HostのIPかHost名になります。

Macでboot2dockerを使っている場合、 export DOCKER_HOST=tcp://<XX.XX.XX.XX>:4243 などとすると思いますが、その <XX.XX.XX.XX><docker host>になります。


SSHでログインしたい時

動作中のDockerコンテナにアクセスしたい場合は、SSHが起動しているのでそこから可能です。


ssh_login

% ssh -p 10022 root@<docker_host>

(password is 'rootroot')


良い所・悪い所


良い所


このSMC WebUIの良い所


  • ブラウザからアクセスできるので、誰でも(使い方がわかっていれば)使える。

  • 生成したStateMachine CodeにURLを埋め込む機能があるので、そのURLをクリックすると、StateMachineの状態図などを見ることができるし、編集もでき、誰とでもStateMachineを共有できる

  • swift対応(まだベータ版)の独自拡張がしてあるので、swift用のStateMachineも生成可能!


オススメの使い方

オンプレミスでもクラウドでもどこでも良いので1つ配備しておくと良いです。

すると、「アクセスできる人たち全員で共有」でき、「昔の状態もソースに埋め込まれたURLから復元できるので修正も容易」です。


コンテナの作成方法が公開されている

下記に公開しています。悪い物は入っていないので安心して下さい。

https://github.com/mokemokechicken/smc_service_docker

ちなみにbuildするのに、私のMac Miniで30分くらいかかります。


悪い所


  • ソース、汚い。(なんかいつも、そんなこと言っている気がする --)

  • もっと拡張する予定の仕組みだったのに、SMCしかないので、そういう意味でUIが全然イケてない

  • そもそもUIがいけてない

  • Docker内でrootアカウントでサービスが起動している…

つまり、動くから良いよね、というシロモノです。すみません。


さいごに

こういうちょっとしたシステムを配布するのに Docker はかなり便利ですよね。

でも、今後のUpdateをどう配布するのかとかイマイチイメージできていません。

こういうのも徐々に慣れていきたいですね。

もしgeneratorやUIやDockerなどをカスタマイズしたら、pull request頂けると非常にありがたいです!

SMC便利なので是非使ってみてください。