1
1

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.

AKS で asp.net core アプリケーション : ローカルで開発する

Last updated at Posted at 2019-10-17

前回は ACR、AKS および SQL を構築しました。今回は Visual Studio 2019 と dotnet core 3.0 の asp.net アプリを作成して SQL とつなげていきます。

ASP.NET アプリの作成

まずはアプリを用意します。

1. Visual Studio 2019 を起動して「新しいプロジェクトの作成」をクリック。
image.png

2.「ASP.NET Core Web アプリケーション」を選択して「次へ」。
image.png

3. プロジェクト名を「core3webapp」をして「作成」。
image.png

4.「Web アプリケーション (モデル ビュー コントローラー)」を選択し、以下オプションに変更してから「作成」。

  • 認証: 個別のユーザー アカウント
  • Docker サポートを有効にする: チェックして Linux を選択
    image.png

作成したアプリの確認

テンプレートから作成したアプリの動作を確認します。

## Docker

テンプレートで Docker 対応を指定したため、Dockerfile が作成され、ビルドすると Docker イメージが作成されます。

csproj ファイル

プロジェクトファイルでは、以下のように DockerDefaultTargetOS が指定されます。

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>netcoreapp3.0</TargetFramework>
    <UserSecretsId>aspnet-core3webapp-01C60103-98E3-4CEB-874B-1FCA99BB1DE6</UserSecretsId>
    <DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
  </PropertyGroup>
...

Dockerfile

Docker イメージの作成定義ファイルで、複数のステップで構成されています。既定で作成される Dockerfile の中身に解説のコメントをつけてみました。

# aspnet 3.0-buster-slim イメージを使う。別名 base と指定
FROM mcr.microsoft.com/dotnet/core/aspnet:3.0-buster-slim AS base
# ワーキングディレクトリとして /app を指定
WORKDIR /app 
# ポート 80 をオープン
EXPOSE 80 
# ポート 443 をオープン
EXPOSE 443 

# dotnet core 3.0 SDK イメージを使う。別名 build と指定
FROM mcr.microsoft.com/dotnet/core/sdk:3.0-buster AS build
# ワーキングディレクトリとして /src を指定
WORKDIR /src 
# core3webapp.csproj だけコピー
COPY ["core3webapp/core3webapp.csproj", "core3webapp/"] 
# 依存関係をリストア
RUN dotnet restore "core3webapp/core3webapp.csproj" 
# 全てのフォルダとファイルをコピー
COPY . . 
# ワーキングディレクトリを /src/core3webapp に変更
WORKDIR "/src/core3webapp" 
# リリースビルドを実行
RUN dotnet build "core3webapp.csproj" -c Release -o /app/build 

# 上記の build 環境の別名を publish と指定
FROM build AS publish 
# publish コマンドで公開用フォルダ作成
RUN dotnet publish "core3webapp.csproj" -c Release -o /app/publish 

# base 環境の別名を final と指定
FROM base AS final 
# ワーキングディレクトリとして /app を指定
WORKDIR /app 
# publish 環境の /app/publish をすべてコピー
COPY --from=publish /app/publish . 
# コンテナ開始時に dotnet.exe で core3webapp.dll を起動
ENTRYPOINT ["dotnet", "core3webapp.dll"] 

Docker イメージ

プロジェクトをビルドすると以下の Docker イメージがローカルにキャッシュされます。
ビルド中に取得したイメージや最終イメージが表示されます。

> docker images
REPOSITORY                             TAG                 IMAGE ID            CREATED             SIZE
core3webapp                            latest              2f23df6191c3        9 minutes ago       226MB
<none>                                 <none>              6591813430b3        9 minutes ago       923MB
mcr.microsoft.com/dotnet/core/sdk      3.0-buster          170a7f2ec51a        6 hours ago         689MB
mcr.microsoft.com/dotnet/core/aspnet   3.0-buster-slim     930743cb4e19        14 hours ago        207MB

データベース接続と初期 DB 作成

1. applications.json のデータベース接続文字列を変更。

  • IP アドレス: kubectl get svc の結果
  • データベース名: Users に変更
  • 認証: sa 認証
  • パスワード: yaml 作成時に指定した MyC0m9l&xP@ssw0rd
{
  "ConnectionStrings": {
    "DefaultConnection": "Server=52.243.63.3;Database=Users;User Id=sa;Password=MyC0m9l&xP@ssw0rd;"
  },
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "AllowedHosts": "*"
}

2. ツール | Nuget パッケージ マネージャー | パッケージ マネージャーコンソールを起動して、以下コマンドを実行。Done のメッセージが出るまで待機。

PM> Update-Database

デバッグ実行

最後に動作を確認します。

1. F5 キーを押下してアプリケーションをデバッグ実行。ブラウザが開いたら「Register」をクリック。
image.png

2. メールをパスワードを入力して「Register」をクリック。
image.png

3.「Click here to confirm your account」をクリックして登録を完了。
image.png

4.「Login」より登録した情報でログイン。
image.png

5. Azure Data Studio でデータベースの状況を確認。
image.png

6. コマンドプロンプトやシェルより実行中の docker コンテナを docker ps で確認。

  • dreamy_napier はランダムでつく名前
>docker ps
CONTAINER ID        IMAGE               COMMAND               CREATED             STATUS              PORTS                                           NAMES
46edafe475b7        core3webapp:dev     "tail -f /dev/null"   12 seconds ago      Up 11 seconds       0.0.0.0:58637->80/tcp, 0.0.0.0:44396->443/tcp   dreamy_napier

7. コンテナにアタッチしてフォルダ構造を確認。

>docker exec -it 46eda /bin/bash
root@46edafe475b7:/app# ls
Areas        Dockerfile  Properties  appsettings.Development.json  core3webapp.csproj       wwwroot
Controllers  Models      Startup.cs  appsettings.json              core3webapp.csproj.user
Data         Program.cs  Views       bin                           obj

8. dotnet の情報から dotnet core 3.0 ランタイムだけであることを確認。

root@46edafe475b7:/app# dotnet --info
  It was not possible to find any installed .NET Core SDKs
  Did you mean to run .NET Core SDK commands? Install a .NET Core SDK from:
      https://aka.ms/dotnet-download

Host (useful for support):
  Version: 3.0.0
  Commit:  95a0a61858

.NET Core SDKs installed:
  No SDKs were found.

.NET Core runtimes installed:
  Microsoft.AspNetCore.App 3.0.0 [/usr/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 3.0.0 [/usr/share/dotnet/shared/Microsoft.NETCore.App]

To install additional .NET Core runtimes or SDKs:
  https://aka.ms/dotnet-download

まとめ

今回は Visual Studio のテンプレートから作成した asp.net core 3.0 アプリが AKS 上の SQL と繋げることができました。次回は AKS 上にアプリをデプロイします。

次の記事へ
目次へ戻る

1
1
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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?