1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

App Service の Web App for Container に Visual Studio Code 環境を作ってみた

Posted at

背景と目的

code-server というブラウザ上で Visual Studio Code(VSCode)が動作するアプリがあり、仮想マシン上に入れたり、ローカルの Docker 上で動かせたりします。プライベート AKS 上でクローズドな VSCode 環境を社内の開発者に提供する仕組みを作れたら楽しそうだな、と妄想するとワクワクします。今回は、App Service の Web App for Container に Visual Studio Code 環境を作ってみました。

前提条件

コマンドの実施環境は、Mac + Azure CLI です。

bash
$ sw_vers
ProductName:    macOS
ProductVersion: 11.5.2
BuildVersion:   20G95

$ az version
{
  "azure-cli": "2.27.2",
  "azure-cli-core": "2.27.2",
  "azure-cli-telemetry": "1.0.6",
  "extensions": {}
}

実施内容

bash
# 環境変数をセットします
region=japaneast
prefix=mnrvscode

# リソースグループを作成します
az group create \
  --name ${prefix}-rg \
  --location $region

# App Service Plan を作成します(デフォルトの SKU は B1 です)
az appservice plan create \
  --name ${prefix}-plan \
  --resource-group ${prefix}-rg \
  --is-linux

# コンテナーイメージに bencdr/code-server-azure を指定して App Service を作成します
az webapp create \
  --resource-group ${prefix}-rg \
  --plan ${prefix}-plan \
  --name ${prefix}-app \
  --deployment-container-image-name bencdr/code-server-azure

# App Service のログを確認します
az webapp log tail \
  --name ${prefix}-app \
  --resource-group ${prefix}-rg

# ひとまず下記のようなログが表示されれば成功です
2021-09-11T23:47:09.801Z INFO  - 86308921272e Pull complete
2021-09-11T23:47:09.853Z INFO  -  Digest: sha256:13567003e93b208b80b2ae02449bc34cfde1d06dc04cff4031e2017badd2d3f2
2021-09-11T23:47:09.897Z INFO  -  Status: Downloaded newer image for bencdr/code-server-azure:latest
2021-09-11T23:47:09.901Z INFO  - Pull Image successful, Time taken: 1 Minutes and 53 Seconds
2021-09-11T23:47:09.934Z INFO  - Starting container for site
2021-09-11T23:47:09.935Z INFO  - docker run -d -p 8629:80 --name mnrvscode-app_0_1c876019 -e WEBSITES_ENABLE_APP_SERVICE_STORAGE=false -e WEBSITE_SITE_NAME=mnrvscode-app -e WEBSITE_AUTH_ENABLED=False -e PORT=80 -e WEBSITE_ROLE_INSTANCE_ID=0 -e WEBSITE_HOSTNAME=mnrvscode-app.azurewebsites.net -e WEBSITE_INSTANCE_ID=a822bcb6dd314caab4bd83084cc7a3991e4965ec4f97b7ce99c0ca46861dc419 bencdr/code-server-azure  

# ストレージアカウントを作成します
az storage account create \
  --name ${prefix}stor \
  --resource-group ${prefix}-rg \
  --https-only true \
  --sku Standard_LRS

# ストレージアカウントのキーを取得します
storagekey=$(az storage account keys list \
  --account-name ${prefix}stor \
  --resource-group ${prefix}-rg \
  --query [0].value \
  --output tsv)

# 作業ファイルの永続化用にファイル共有を作成します
az storage share create \
  --account-name ${prefix}stor \
  --name ${prefix}-project

# /home/coder/project にマウントします
az webapp config storage-account add \
  --name ${prefix}-app \
  --resource-group ${prefix}-rg \
  --custom-id ${prefix}-project \
  --storage-type AzureFiles \
  --share-name ${prefix}-project \
  --account-name ${prefix}stor \
  --access-key $storagekey \
  --mount-path /home/coder/project

# ログインパスワードを作成します
vscodepass=$(openssl rand -base64 16)
echo $vscodepass

# App Service のアプリケーション設定にパスワードを環境変数として登録します(App Service が再起動します)
az webapp config appsettings set \
  --name ${prefix}-app \
  --resource-group ${prefix}-rg \
  --settings PASSWORD=$vscodepass

# もう一度、App Service のログを確認します
az webapp log tail \
  --name ${prefix}-app \
  --resource-group ${prefix}-rg

# 環境変数に設定したパスワードが有効になって起動しました
2021-09-12T00:03:18.623148231Z: [INFO]  [2021-09-12T00:03:18.615Z] info  Wrote default config file to ~/.config/code-server/config.yaml
2021-09-12T00:03:20.373259419Z: [INFO]  [2021-09-12T00:03:20.355Z] info  code-server 3.9.0 fc6d123da59a4e5a675ac8e080f66e032ba01a1b
2021-09-12T00:03:20.373314023Z: [INFO]  [2021-09-12T00:03:20.363Z] info  Using user-data-dir ~/.local/share/code-server
2021-09-12T00:03:20.444925243Z: [INFO]  [2021-09-12T00:03:20.444Z] info  Using config file ~/.config/code-server/config.yaml
2021-09-12T00:03:20.444971147Z: [INFO]  [2021-09-12T00:03:20.444Z] info  HTTP server listening on http://0.0.0.0:80 
2021-09-12T00:03:20.444977047Z: [INFO]  [2021-09-12T00:03:20.444Z] info    - Authentication is enabled
2021-09-12T00:03:20.444981248Z: [INFO]  [2021-09-12T00:03:20.444Z] info      - Using password from $PASSWORD
2021-09-12T00:03:20.444985148Z: [INFO]  [2021-09-12T00:03:20.444Z] info    - Not serving HTTPS 

# App Service に自宅の IP アドレスからのみアクセス出来るようにします
az webapp config access-restriction add \
  --name ${prefix}-app \
  --resource-group ${prefix}-rg \
  --rule-name location-home \
  --action Allow \
  --ip-address $(curl -s inet-ip.info)/32 \
  --priority 100

# App Service の URL を表示しブラウザでアクセスします
az webapp show \
  --name ${prefix}-app \
  --resource-group ${prefix}-rg \
  --query defaultHostName \
  --output tsv

実施結果

最初に表示される画面。先ほど作成したログインパスワードを入力して SUBMIT します。

vscode login

Visual Studio Code が App Service 上で動きました!

vscode ui

参考

作成したリソースを削除します。

bash
# リソースグループを削除します
az group delete \
  --name ${prefix}-rg

下記は、参考サイトです。

code-server-azure

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?