最初から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/
アプリ名(今回は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 件のコメント:
コメントを投稿