DevDevデブ!!

プログラミングのこととか書きます。多分。。。

pyhoconをdockerコンテナで実行するやつ作った

表題まんま。作りました。

github.com

Python公式のalpineイメージにpipでpyhoconインストールしただけでーすwwwwwwww

pyhoconってなにさ?

HOCONフォーマットのpython用parser

HOCONっていうのは、LightBend社が開発した設定ファイル用のフォーマットで、playframeworkの設定ファイルで使われている。

犯行動機

今、管理画面をscala + play2で実装してて、設定ファイル(application.conf)はHOCONフォーマットなんだけど、他の言語からも設定ファイルを参照する必要があって、同じ項目を別フォーマットで二重管理するのは嫌なので、とりあえずpyhoconでjsonyamlにフォーマット変換すればいいかと考えた。

HOCONのパーサーライブラリは他言語用のやつを開発してる人がちらほらいるんだけど、jsonyamlに変換して読ませちゃったほうが無難そう。

で、他のメンバーにpythonの環境を作ってもらうのは面倒なので、dockerコンテナで起動するようにしたというお話。

使い方とか

docker run -i --rm stk132/pyhocon-cmd-docker -f yaml < /path/to/hocon.conf

な感じで。

jsonにしたいときは-fオプションをjsonにしたらいい。

ていうか、pyhoconコマンドそのままです。

非対応機能

pyhocon自体が非対応なんだと思うけど、play2のmodule設定のこれが入ってるとパースに失敗する。

play.modules.enabled += "yourmodule"

この+=記法に対応するものがyaml, jsonにはないからだよね?多分。

みなさんはどーしてるんですか?

最近のサービス開発だと、複数言語使うのは割と普通だと思うんですが、設定ファイルのフォーマットってどうしてるんでしょう?

yaml or json or toml

ってところでしょうか?

play2の設定ファイルにHOCON以外のフォーマットが使えるんなら、他のメジャーフォーマットにしたほうが楽そう。