1
2

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.

Docker+.NET 6環境でBlazor WebAssemblyアプリを動かしてみる

Last updated at Posted at 2022-01-13

はじめに

業務でBlazor WebAssemblyアプリを開発する機会があり、今回はその時に得た知識をベースに記事を書かせていただきます。

まず、この記事を書き始めた時点ではDocker+dotnetでアプリケーションサーバを構築している情報を調べてみると....
.NET Core 3.1 を使用した情報は日本語文献でも比較的入手しやすいが.NET 6の情報は海外の記事が多く日本語文献は少ない感じがしました。
そのようなこともあり今回はDocker+.NET 6環境でBlazor WebAssemblyアプリを動かす流れをご紹介いたします。

前提条件

.NET 6を選定している理由としては現時点で最新のLTS版ということで選定しております。
Dockerのインストールと起動が完了済み、ローカルマシン上でdotnet コマンドが使える想定です。

ベースとなるプロジェクトの生成

今回、利用するBlazor WebAssemblyアプリ用のプロジェクトを作成しておきます。
コマンドプロンプトを開きプロジェクトを作成するフォルダにカレントディレクトリを移動させます。
そこで下記のコマンドを実行するとプロジェクトに必要なファイル群が生成されます。
今回のプロジェクト名はHelloWorldにしています。

dotnet new blazorwasm --hosted -o  HelloWorld

コマンドを実行すると下記のようなフォルダやファイルが出来上がっているはずです。

HelloWorld.png

Dockerfileを用意する

今回作成したDockerfileはこのような記述となっています。

Dokerfile
# プロジェクトのビルド環境用イメージとしてバージョン6.0のsdkを指定する
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build

# ビルド環境側の作業ディレクトリをセット
WORKDIR /app

# ローカル環境からすべてのファイルをビルド環境へコピーする
COPY . ./

# コピーしたプロジェクトをリストアする
RUN dotnet restore

# publishディレクトリを指定して発行することで必要なファイルをまとめる
RUN dotnet publish -c Release -o publish

# アプリの稼働環境用イメージとしてバージョン6.0のaspnetを指定する
FROM mcr.microsoft.com/dotnet/aspnet:6.0

# 稼働環境側の作業ディレクトリをセット
WORKDIR /app

# コンパイル環境のコンテナから発行したアプリのファイル群一式をコピーしてくる
COPY --from=build /app/publish .

# サーバの待ち受けポートを80ポートにセットする
EXPOSE 80

# 起動するアプリをセットする
ENTRYPOINT ["dotnet", "HelloWorld.Server.dll"]

このDockerfileをプロジェクトフォルダに配置します。
HelloWorldWithDockerfile.png

Dockerイメージの作成

コマンドプロンプトのカレントディレクトリをプロジェクトフォルダ直下に移動させます。
そこで下記のコマンドを実行しDockerイメージを作成します。
今回はイメージ名をHelloWorldにしております。

docker build -t helloworld .

Dockerイメージの起動

コマンドプロンプトのカレントディレクトリはプロジェクトフォルダ直下のまま下記のコマンドを実行します。

docker run -d -p 80:80 helloworld:latest --rm

コマンドが完了したら、http://localhost/をブラウザで開いてみてください。
次の画像のようなデフォルトのページが表示されるはずです。

HelloWorldindex.png

次回の記事ではBlazor WebAssemblyアプリでサーバ側のログの取得方法に関してあまり情報を得られなかったので、今回私が実装してみた方法をご紹介いたします。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?