0
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 1 year has passed since last update.

.NET Framwork 2.0 のアプリを Azure AppService Hyper-V コンテナで動かしてみた

Posted at

背景と目的

その昔、コードを書いている時点では、このシステムが 20 年以上も使われ続けているなんて、全く想像していませんでした。そのシステムは、5 年に 1 回訪れるハードウェア入れ替えにより計 4 回引越を行いました。最初ノート PC 上で動いていたそのシステムは、タワー型の PC サーバーやデータセンターの 1U サーバーに引越、その後仮想化基盤の上で 2 回引越ました。そして今後も使われる事が想定されるそのシステムは、コンテナ化して Azure の AppService に引っ越す事になりました。これらのストーリーは一部フィクションですが、こんなシステムが世の中に存在するのです。

今回は、.NET Framwork 2.0 を用いた ASP.NET Web アプリを VB で作成して、コンテナ化した上で Azure App Service で動かしてみたいと思います。

前提条件

検証で使用したツールは下記の通りです。

  • Visual Studio 2022
  • Docker Desktop for Windows

検証用のアプリを作成

新しいプロジェクト作成

aspnetweb-vb20-01.png

プロジェクト名とフレームワーク選択

aspnetweb-vb20-02.png

空のまま作成

aspnetweb-vb20-03.png

Web フォームを追加

aspnetweb-vb20-04.png

Default にする

aspnetweb-vb20-05.png

HTML を変更

    <div>
        <p>
        Machine Name: <asp:Label id="Label1" 
                     Text="Machine Name" 
                     runat="server"/>
        </p>
        <p>
        Runtime Version: <asp:Label id="Label2" 
                     Text="Runtime Version" 
                     runat="server"/>
        </p>
    </div>

aspnetweb-vb20-06.png

コードを表示

aspnetweb-vb20-07.png

コードを追加

        Label1.Text = Environment.MachineName
        Label2.Text = Environment.Version.ToString()

aspnetweb-vb20-08.png

IIS Express で Debug

aspnetweb-vb20-09.png

ローカル環境で動作確認

aspnetweb-vb20-10.png

Terminal を開く

aspnetweb-vb20-11.png

Dockerfile を作成

Out-File Dockerfile -encoding ascii

devenv /edit Dockerfile
FROM mcr.microsoft.com/dotnet/framework/sdk:3.5 AS build
WORKDIR /app
COPY . .
RUN nuget restore
RUN msbuild /p:Configuration=Release -r:False

FROM mcr.microsoft.com/dotnet/framework/aspnet:3.5-windowsservercore-ltsc2019 AS runtime
WORKDIR /inetpub/wwwroot
COPY --from=build /app .

aspnetweb-vb20-12.png

Docker で動作確認

docker build -t aspnetwebvb20 .

docker run --name aspnetwebvb20 -d -p 8000:80 aspnetwebvb20

http://localhost:8000

docker stop aspnetwebvb20

docker rm aspnetwebvb20

aspnetweb-vb20-13.png

AppService 作成

$region = "japaneast"
$prefix = "aspnetwebvb20"

az group create `
  --name ($prefix + "-rg") `
  --location $region

az acr create `
  --name ($prefix + "acr") `
  --resource-group ($prefix + "-rg") `
  --sku Basic `
  --admin-enabled true

az acr build `
  --platform windows `
  --registry ($prefix + "acr") `
  --image $prefix `
  .

az appservice plan create `
  --name ($prefix + "-plan") `
  --resource-group ($prefix + "-rg") `
  --hyper-v `
  --sku P1V3

$acrpass = az acr credential show `
  --resource-group ($prefix + "-rg") `
  --name ($prefix + "acr") `
  --query passwords[0].value `
  --output tsv

az webapp create `
  --name ($prefix + "-app") `
  --resource-group ($prefix + "-rg") `
  --plan ($prefix + "-plan") `
  --deployment-container-image-name ($prefix + "acr.azurecr.io/" + $prefix + ":latest") `
  --docker-registry-server-user ($prefix + "acr") `
  --docker-registry-server-password $acrpass

AppService で動作確認

aspnetweb-vb20-14.png

参考

az group delete `
  --name ($prefix + "-rg")

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

https://github.com/microsoft/dotnet-framework-docker/blob/main/samples/aspnetapp/Dockerfile

0
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
0
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?