Azure Web Appsお勉強メモ(1)Azure Web AppsにてRailsアプリを動かす(2021年6月版)

はじめに

2年ぐらい前にRailsアプリをAzure Web Appsで動かすと言うことをやったのですが、Azure Web Appsについて調べる必要性が出てきたので今の状態で動かしてみます。

miyohide.hatenablog.com

2021年6月時点でのAzure Web AppsにおけるRubyの対応

Azure Web AppsはRubyを動かすことができますが、2021年6月時点でRubyのバージョンは2.6。さすがに新しいバージョンで動かしたいものです。

f:id:miyohide:20210613172714p:plain

そこで、RailsアプリをDockerイメージ化して、それを動かすことにします。

RailsアプリのDockerイメージ化

RailsアプリのDockerイメージ化はいろんな情報が入り乱れていて分かりにくいのですが、以下の記事がとっかかりにはいいと感じました。

sinsoku.hatenablog.com

本番環境を作成するにはもう少しDockerイメージサイズを小さくする必要がありますが、とっかかりとしては十分かと思います。Dockerイメージを作成して、Docker Hubにpushしておけば準備完了です。

DockerイメージをAzure Web Appsで動かす

作成したDockerイメージをAzure Web Appsで動かすには、Azure Web Appsの作成時に対象のDockerイメージを指定すればOKです。

f:id:miyohide:20210613174227p:plain

ただ、作成した時点でDockerイメージをPullをするだけではなく、WebアプリにはじめてアクセスしたときにDockerイメージをpullします。このため、初回起動時には時間がかかります。プランにもよるかと思いますが、BasicのB1インスタンスで実行したところ、3分ぐらいかかりました。

f:id:miyohide:20210613174607p:plain
初回アクセス時

Dockerイメージのpullが終了時点

f:id:miyohide:20210613174649p:plain
Dockerイメージのpullが終了したとき

以上でAzure Web AppsでRailsアプリを動かすことができます。

ログを見る

アプリケーションを動かすときに、大事なことの一つがログです。ログがないとトラブル発生時にどのようなことが起きたのかすら分かりません。ログに関しては、以下のドキュメントがありますが、私は読んでもよく分かりませんでした。

docs.microsoft.com

実際にApp Service ログを有効化してみましたが、FTPでファイルを取らないとダメっぽくてちょっと現実的ではなさそうです。

f:id:miyohide:20210613175554p:plain

さらに調べてみると、プレビュー機能ではありますが診断設定を使うことでLog AnalyticsやAzure Storageにログを送ることができるようです。

azure.github.io

Azure Storageとの連携をやってみると...

f:id:miyohide:20210613175914p:plain

以下のような感じで出力されました。

f:id:miyohide:20210613175940p:plain

それぞれのコンテナを見てみると、深いディレクトリが作成され、PT1H.jsonというファイルが作成されていることが確認できました。