.NET RuntimeのDockerイメージでHello World!アプリケーションを実行する

2020年11月30日(月)

環境

.NET SDK 5.0をホスト環境にインストールする

Download .NETから.NET SDK x64をダウンロードする。

Download .NET

.NET SDK x64のインストーラーを実行する。

dotnet-sdk-5.0.100-win-x64.exe

.NETのバージョンを確認する。

$ dotnet --version
5.0.100
        

参考情報

.NETでHello World!アプリケーションを実行する

コンソールアプリケーションのプロジェクトを作成する。

$ cd C:\Temp\dotnet
$ dotnet new console -o myApp
The template "Console Application" was created successfully.

Processing post-creation actions...
Running 'dotnet restore' on myApp\myApp.csproj...
  復元対象のプロジェクトを決定しています...
  C:\Temp\dotnet\myApp\myApp.csproj を復元しました (53 ms)。
Restore succeeded.
        

プロジェクトを実行する。

$ cd C:\Temp\dotnet\myApp
$ dotnet run
Hello World!
        

ソースを書き換えて現在日時を出力する。

C:\Temp\dotnet\myApp\Program.cs

using System;

namespace myApp
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
            Console.WriteLine("The current time is " + DateTime.Now);
        }
    }
}
        

プロジェクトを実行する。

$ cd C:\Temp\dotnet\myApp
$ dotnet run
Hello World!
The current time is 2020/11/28 14:58:47
        

参考情報

.NET RuntimeのDockerイメージでHello World!アプリケーションを実行する

Hello World!アプリケーションをリリースビルドする。

$ cd C:\Temp\dotnet\myApp
$ dotnet publish -c Release
.NET 向け Microsoft (R) Build Engine バージョン 16.8.0+126527ff1
Copyright (C) Microsoft Corporation.All rights reserved.

  復元対象のプロジェクトを決定しています...
  復元対象のすべてのプロジェクトは最新です。
  myApp -> C:\Temp\dotnet\myApp\bin\Release\net5.0\myApp.dll
  myApp -> C:\Temp\dotnet\myApp\bin\Release\net5.0\publish\
        

"-o"オプションを指定しない場合は次のフォルダに出力される。

C:\Temp\dotnet\myApp\bin\Release\net5.0\publish

.NET RuntimeのDockerイメージを取得する。

.NETのDockerイメージ > .NET RuntimeのDockerイメージを辿って"Windows Server, version 2009 amd64 Tags"から.NET Runtimeを含むNano ServerのDockerイメージを取得する。

$ cd C:\Temp\dotnet\myApp
$ docker pull mcr.microsoft.com/dotnet/runtime:5.0.0-nanoserver-2009
        

Dockerfileを作成する。

C:\Temp\dotnet\myApp\Dockerfile
FROM mcr.microsoft.com/dotnet/runtime:5.0.0-nanoserver-2009
WORKDIR /app
COPY ./bin/Release/net5.0/publish .
ENTRYPOINT [ "dotnet", "myApp.dll" ]
          

Dockerイメージをビルドする。

$ cd C:\Temp\dotnet\myApp
$ docker build --tag net-5-nano-2009-amd64:helloworld .
        

Dockerイメージをコンテナとして実行する。"--detach"オプションでバックグラウンド実行にすると出力が表示されない。

$ cd C:\Temp\dotnet\myApp
$ docker run --name Net-5-Nano-2009-amd64-HelloWorld net-5-nano-2009-amd64:helloworld
Hello World!
The current time is 11/28/2020 3:49:28 PM
        

参考情報