More Related Content
Similar to .NET Core向けコンテナおよびデバッグ関連のVisual Studioの新機能
Similar to .NET Core向けコンテナおよびデバッグ関連のVisual Studioの新機能 (20)
More from Takayoshi Tanaka
More from Takayoshi Tanaka (20)
.NET Core向けコンテナおよびデバッグ関連のVisual Studioの新機能
- 5. (補足).NET Core 3.0
/ ASP.NET Core 3.0
.NET Core 3.0は今年後半リリース
◦ 詳細な日程はBuild 2019にて発表予定
◦ https://devblogs.microsoft.com/dotnet/announcing-net-core-3-preview-3/
Visual Studio 2019では.NET Core 3.0 Previewを利用できる
ASP.NET Core 3.0も.NET Core 3.0と同時の予定
◦ 3.0から.NET Coreのみサポート(.NET Frameworkは非サポート)
◦ https://docs.microsoft.com/ja-jp/aspnet/core/?view=aspnetcore-2.2
◦ ASP.NET Core 3.0 に関連するVSの新機能はまだなさそう
- 10. ユーザーシークレット
◦ 開発時用の機能 ➔ 運用環境で使うのはNG
◦ 機密情報をソースコードリポジトリの外に ➔ 実体は %APPDATA%
◦ ソースコード自体は開発環境と運用環境で変更なし
◦ 運用環境では、機密情報を保持できる適切なストレージ(Azure Key Vaultなど)を利用
- 32. おすすめは…?
とりあえず使ってみる分にはサンプルプロジェクトで試してみよう
◦ Service FabricやDocker Composeは専用プロジェクトが追加されるので、
場合によっては使いづらいかもしれない
◦ テンプレートでできたものを編集するのが早いのか
素のASP.NET プロジェクトに手編集するのが早いのかは
場合によりけり…
プロジェクトにはDockerfileや最低限のファイルのみ持たせ、
ローカルのデバッグはDockerなしがいいのでは?
◦ 同じアプリの本番環境でもDockerあり、なし両方の可能性がありうる
◦ それができるのがASP.NET Coreのメリット
◦ Azure DevOpsやそれに類するサービスを使って、
CICD側にコンテナ作成やデプロイの設定を持たせる
- 34. 発行先
App Service (Linux)
◦ 選択したApp Serviceに展開
コンテナーレジストリ
◦ ACRもしくはDocker Hubもしくは任意
のレジストリにpush
Azure VM
◦ Azure VM上のIISに
Web Deployで配置
IIS, FTP, その他
◦ WebDeploy (MSDeploy)
◦ 既存の機能
フォルダー
◦ dotnet publish
- 43. セットアップ例
Install-WindowsFeature -name Web-Server -IncludeManagementTools
Install-WindowsFeature Web-Asp-Net45
Invoke-WebRequest http://go.microsoft.com/fwlink/?LinkId=2085155 -OutFile ndp48-devpack-enu.exe
.ndp48-devpack-enu.exe
Install-WindowsFeature -Name Web-Mgmt-Service
# Install Web Deploy 3.6
# Download file from Microsoft Downloads and save to local temp file (%LocalAppData%/Temp/2)
$msiFile = [System.IO.Path]::GetTempFileName() | Rename-Item -NewName { $_ -replace 'tmp$', 'msi' } -PassThru
Invoke-WebRequest -Uri http://download.microsoft.com/download/0/1/D/01DC28EA-638C-4A22-A57B-4CEF97755C6C/WebDeploy_amd64_en-US.msi -OutFile $msiFile
# Prepare a log file
$logFile = [System.IO.Path]::GetTempFileName()
# Prepare the arguments to execute the MSI
$arguments= '/i ' + $msiFile + ' ADDLOCAL=ALL /qn /norestart LicenseAccepted="0" /lv ' + $logFile
# Execute the MSI and wait for it to complete
$proc = (Start-Process -file msiexec -arg $arguments -Passthru)
$proc | Wait-Process
Get-Content $logFile
- 47. AKSを使ったデバッグ
Azure Dev Spacesもしくはスナップショットデバッガーを使います
◦ オーケストレーターサポートでkubernetes/helmを有効化
Azure Dev Spaces
◦ 一部のリージョンでのみ利用可能なプレビュー
◦ AKS作成後、Dev Spacesを有効にする ここまでAzure PortalやCLIで準備しておく
◦ ローカルのデバッグと同じような操作感覚で使える
◦ Docker Desktop 不要 (AKS側でコンテナのビルドを行う)
スナップショットデバッガーを利用したい場合
◦ https://docs.microsoft.com/ja-jp/visualstudio/debugger/debug-live-azure-
kubernetes?view=vs-2019
- 55. まとめ
ASP.NET Core Webプロジェクトの新機能
◦ ユーザーシークレット、cshtmlでの参照検索、LibMan
Dockerサポート
◦ Docker Desktop必須
◦ 単一プロジェクトに変更
コンテナオーケストレーターサポートの追加
◦ Kubernetes/Helm, Service Fabric, docker composeから選択可能。
◦ リソース定義ファイルデバッグ用のプロジェクトやNuGetパッケージが追加される
Azure Dev Spaces
◦ Docker Desktop不要で、AKS上でコンテナとしてアプリを動かしてデバッグできる
スナップショットデバッガー
◦ Visual Studioから実行できるのはAzureサービスで動かした場合
◦ タイムトラベルデバッガーは現状Windows VM on Azure + ASP.NET 4.8必須