LoginSignup
56
51

More than 5 years have passed since last update.

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

Posted at

はじめに

State Machine Compilerは、複雑なStateMachineを簡単に生成してくれる便利ツールです。
ただし、JavaのInstallが必要だったり、図を出力しようとしたらGraphvizが必要だったり、割と準備が大変です。

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

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

そこで、誰でも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便利なので是非使ってみてください。

56
51
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
56
51