この記事は、求ム!Cloud Nativeアプリケーション開発のTips!【PR】日本マイクロソフト Advent Calendar 2020 の 20 日目です(後から追っかけで書いています)。
本記事では Rails アプリを Azure App Service に Docker を使い、デプロイ & 継続的デプロイする方法について、ご紹介したいと思います。
手順
手順は以下の通りです。
- Azure CLI or Portal でログインする
- Azure CLI or Portal でリソースグループを作成する
- Azure CLI or Portal で Azure Container Registry(以下ACR) に使用するイメージを登録する
- Rails アプリの Docker Image を作成する
- Azure CLI で作成した Rails アプリの Docker Image を ACR に push する
- Azure CLI or Portal で App Service Plan を作成する
- Azure CLI or Portal で App Service Plan と ACR の Docker Image をパラメーターに指定して App Service を作成する
- Azure CLI or Portal で App Service と ACR を関連づける
- Azure CLI or Portal で App Service に CD を設定する
- Azure CLI or Portal で ACR に Webhook を設定する
- Azure CLI or Portal で環境変数の設定
以下に Azure CLI での実行コマンド例を記載します。
1. Azure CLI でログインする
$ az login
2. Azure CLI でリソースグループを作成する
$ az group create --name [リソースグループ名] --location [リソースグループの場所]
3. Azure CLI で Azure Container Registry(以下ACR) に使用するイメージを登録する
$ az acr create --resource-group [リソースグループ名] --name [ACR 名] --sku [好きなの選択] --admin-enabled true --location [リソースグループと同じ場所]
4. Rails アプリの Docker Image を作成する
(Azure CLI ではないので、スキップ)
5. Azure CLI で作成した Rails アプリの Docker Image を ACR に push する
$ az acr login --name [ACR 名]
$ docker push [ACR の名とタグ]
6. Azure CLI で App Service Plan を作成する
$ az appservice plan create --resource-group [リソースグループ名] --name [App Service Plan 名] --sku [B1とかS1とか指定] --location [リソースグループと同じ場所] --is-linux
7. Azure CLI で App Service Plan と ACR の Docker Image をパラメーターに指定して App Service を作成する
$ az webapp create --resource-group [リソースグループ名] --plan [App Service Plan名] --name [App Service 名] --deployment-container-image-name [ACR の名とタグ]
8. Azure CLI で App Service と ACR を関連づける
$ az webapp config container set --name [App Service 名] --resource-group [リソースグループ名] --docker-custom-image-name [ACR の名とタグ] --docker-registry-server-url [ACR の場所] --docker-registry-server-user [ACR 名] --docker-registry-server-password [ACR の Password]
9. Azure CLI or Portal で App Service に CD を設定する
$ az webapp deployment container config --resource-group [リソースグループ名] --name [App Service 名] --enable-cd true
10. Azure CLI or Portal で ACR に Webhook を設定する
$ az acr webhook create --name [App Service 名] --resource-group [リソースグループ名] --scope [ACR の名とタグから場所を引いたもの] --location [リソースグループと同じ場所] --uri [URI] --actions push delete
11. Azure CLI or Portal で環境変数の設定
$ az webapp config appsettings set --settings RAILS_ENV=[環境名] --name [App Service 名] --resource-group [リソースグループ名]