{Azure App Service}デプロイスロット

 

https://www.isoroot.jp/blog/3904/

https://learn.microsoft.com/ja-jp/azure/app-service/deploy-staging-slots


実行している App Service プランのサービス レベルが Standard、Premium、または Isolated である場合は、
Web アプリ、Linux 上の Web アプリ、モバイル バック エンド、または API アプリを Azure App Service にデプロイするときに、
既定の運用スロットではなく別個のデプロイ スロットを使用できます。


※プランのOSを指定しない場合、windowsとなり、デプロイURLに下記のようなメッセージがでる。
You do not have permission to view this directory or page.


-- 1. 前作業

az login --use-device-code
az account show

az version

az configure --list-defaults
az configure --defaults location=japaneast
az configure --list-defaults

az group create \
--name rg9999999 \
--location japaneast


az group list
az upgrade


-- 2. App Service プラン作成

 

az appservice plan create \
--name plan01 \
--resource-group rg9999999 \
--sku S1 \
--is-linux


az appservice plan list \
--resource-group rg9999999


-- 3. App Service アプリ作成


az webapp list-runtimes \
--os linux


az webapp create \
--name app123 \
--plan plan01 \
--resource-group rg9999999 \
--runtime "NODE:14-lts"
 
az webapp list \
--resource-group rg9999999


-- 4. Node.js 開発環境のセットアップ

-- 4.1 NVM のインストール

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.2/install.sh | bash

-- 4.2 Node.js と npm(Node Package Manager)のインストール

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion

nvm install 14.0.0
nvm use 14.0
nvm alias default 14.0.0

node -v

 

-- 5. Node.jsのアプリケーションを用意する

cd
rm -rf 123
mkdir 123
cd 123


npx express-generator app123 --view pug
cd app123
npm install
npm start

curl http://localhost:3000/

vim routes/index.js

var express = require('express');
var router = express.Router();
 
router.get('/', function(req, res, next) {
  res.render('index', { title: 'Ver1.0' });
});
 
module.exports = router;

 

 


npm start
curl http://localhost:3000/

 

-- 6. App Serviceにデプロイする

cd ~/123/app123
zip -r app123.zip .

az webapp deployment source config-zip \
--resource-group rg9999999 \
--name app123 \
--src app123.zip


1分程度待つ


https://app123.azurewebsites.net

 


-- 7. デプロイスロットを作成する

az webapp deployment slot create \
--resource-group rg9999999 \
--name app123 \
--slot slot01


az webapp deployment slot list \
--resource-group rg9999999 \
--name app123

 

-- 8. アプリをバージョンアップする

cd ~/123/app123
vim routes/index.js

var express = require('express');
var router = express.Router();
 
router.get('/', function(req, res, next) {
  res.render('index', { title: 'Ver2.0' });
});
 
module.exports = router;

 

-- 9. デプロイスロットに新しいバージョンのアプリをデプロイする

cd ~/123/app123
zip -r app123.zip .

az webapp deployment source config-zip \
--resource-group rg9999999 \
--name app123 \
--slot slot01 \
--src app123.zip


https://app123-slot01.azurewebsites.net

 


-- 10. デプロイスロットをスワップする

az webapp deployment slot swap \
--resource-group rg9999999 \
--name app123 \
--action swap \
--slot slot01


https://app123.azurewebsites.net

 


-- 11. クリーンアップ

az webapp delete \
--resource-group rg9999999 \
--name app123


az webapp delete \
--resource-group rg9999999 \
--name app123 \
--slot slot01

 

az webapp deleted list \
--resource-group rg9999999 \
--name app123

 

az appservice plan delete \
--name plan01 \
--resource-group rg9999999 \
--yes

 

az group list
az group delete \
--name rg9999999 \
--yes