2017年4月23日日曜日

【Microsoft Azure】みんな大好きマストドンを Web App On Linux で簡単に動かそう(完結編)

Web App On Linux は、簡単に言えば単体のDockerコンテナを動かすサービスです。
最初からNode.jsとかPHPのイメージが提供されているので、Windowsベースの Web App と同じように、かつApacheをWebサーバーとして使えるのがメリットです。

今回マストドンを単体のdockerコンテナで動かすわけですが、大変な苦労をして作成したdockerコンテナイメージを Docker Hub で公開します。
https://hub.docker.com/r/cocteau666/mastodon/

苦労した点を列挙するとこんな感じです。

1.複数のサーバーをひとつのコンテナに立てる
本来なら1コンテナ1プロセスの思想で、必要ならオーケストレーションツールで複数のコンテナを使うのが正しいのですが、限られた環境なのであえてオールインワンにしてみました。
この問題を解決するためには、supervisordを使いました。

2.ホスト名を設定する
コンテナをrunしたらほぼ問題なく動くようになったのですが、Web App にデプロイ後にどうやってホスト名を追加するのが良いのか、いろいろ検討しました。
結局、ポータルのアプリケーション設定の中のアプリ設定(いわゆる環境変数)に、Railsで使う環境変数を上書きする形で設定するように落ち着きました。
手順は後ほど説明します。

それでは、このイメージを使って、Azureで簡単にマストドンを運用する手順を説明します。

Azure使ってない人はまず使えるようにしてくださいw
https://azure.microsoft.com/ja-jp/offers/ms-azr-0044p/

ポータルにログインしたら、「Web + モバイル」→「Web App On Linux」を選びます。



アプリ名(今回はmastodon0)を入力し、サブスクリプションを選択(デフォルトでも問題ないはず)、リソースグループを新規作成または既存のグループを選択(今回はdocker2というグループを新規作成)します。
App Service のプラン/場所は、プランは今のところ「B1 Basic」が5700円/月で一番安いです。場所はプレビューなので、West Europe、Southeast Asia、West USの3つから選びます。ご自身に近いところでどうぞ。
コンテナの構成は、イメージのソースは「Docker Hub」、リポジトリ アクセスは「パブリック」、イメージとオプションのタグは「cocteau666/mastodon:latest」をそれぞれ入力します。
ここまで入力したら左下の「作成」を押します。

出来上がったら、アプリの管理ポータルで環境変数を設定します。
左の一覧から「アプリケーション設定」を選び、真ん中あたりのアプリ設定に追加します。
キーが「LOCAL_DOMAIN」、値が今回のアプリのFQDN(mastodon0.azurewebsites.net)を入力して上の保存を押します。












保存したら左の一覧の「概要」を選び、上の「再起動」をクリックします。


10分程度たってから、アプリにアクセスします。(今回は https://mastodon0.azurewebsites.net/)
見えましたか?




























ここでアカウントを登録すると確認メールが来て、アカウントを有効化できると思います。

なお、簡単にできますが、多少注意点があります。

・データベースもオールインワンなので、再起動するとすべてのデータがなくなります...
・App Serviceのプランに応じてサーバーのディスクサイズが決まりますが、B1だと10GBであまり余裕がないかと。大きくしても50GBなので、ごく小規模での運用に限られるかと思います。

公開しているイメージを自分でカスタムして使うのもアリなので、データベースを外部に立てたり(PostgreSQLです)、Redisキャッシュサービス使ってみたり、いろいろできると思いますので、挑戦してみてください。


0 件のコメント: