はじめに
2年ぐらい前にRailsアプリをAzure Web Appsで動かすと言うことをやったのですが、Azure Web Appsについて調べる必要性が出てきたので今の状態で動かしてみます。
2021年6月時点でのAzure Web AppsにおけるRubyの対応
Azure Web AppsはRubyを動かすことができますが、2021年6月時点でRubyのバージョンは2.6。さすがに新しいバージョンで動かしたいものです。
そこで、RailsアプリをDockerイメージ化して、それを動かすことにします。
RailsアプリのDockerイメージ化
RailsアプリのDockerイメージ化はいろんな情報が入り乱れていて分かりにくいのですが、以下の記事がとっかかりにはいいと感じました。
本番環境を作成するにはもう少しDockerイメージサイズを小さくする必要がありますが、とっかかりとしては十分かと思います。Dockerイメージを作成して、Docker Hubにpushしておけば準備完了です。
DockerイメージをAzure Web Appsで動かす
作成したDockerイメージをAzure Web Appsで動かすには、Azure Web Appsの作成時に対象のDockerイメージを指定すればOKです。
ただ、作成した時点でDockerイメージをPullをするだけではなく、WebアプリにはじめてアクセスしたときにDockerイメージをpullします。このため、初回起動時には時間がかかります。プランにもよるかと思いますが、BasicのB1インスタンスで実行したところ、3分ぐらいかかりました。
Dockerイメージのpullが終了時点
以上でAzure Web AppsでRailsアプリを動かすことができます。
ログを見る
アプリケーションを動かすときに、大事なことの一つがログです。ログがないとトラブル発生時にどのようなことが起きたのかすら分かりません。ログに関しては、以下のドキュメントがありますが、私は読んでもよく分かりませんでした。
実際にApp Service ログを有効化してみましたが、FTPでファイルを取らないとダメっぽくてちょっと現実的ではなさそうです。
さらに調べてみると、プレビュー機能ではありますが診断設定を使うことでLog AnalyticsやAzure Storageにログを送ることができるようです。
Azure Storageとの連携をやってみると...
以下のような感じで出力されました。
それぞれのコンテナを見てみると、深いディレクトリが作成され、PT1H.jsonというファイルが作成されていることが確認できました。