.NET と Docker

秀丸とは直接関係がありませんが、Dockerについても触れます。

.NETは、PythonやRuby、NodeJSなどとは異なり、正式な仕組みとして、
「実行時にPCにインストールされたランタイムに依存しない形で配布」することが出来ます。

又、Pythonなどと異なり、.NETはそれぞれのdllやexeに対応する名前のjsonファイル内に
「この.dllや.exeはどのバージョンの.NETを使うか」の情報が付与されているため、
env環境を切り替えるなどといった発想は原則しません。

PCにインストールされたランタイムに依存する形で配布したとしても、
.NET5と.NET6の2つのランタイムをPCへとインストールしてあるから、どちらで実行されるのかわからない、
などということは無いのです。

このため、Dockerを使ってどうのこうのという利点がほとんどありません。

繰り返しますが、

  • .NET Core 3.1 と .NET5 と .NET6のランタイムをPCへとインストールする
  • コンパイル時に必要な.NETランタイムも一緒にビルドフォルダに出力されるため、それを配布ファイルに含める

このどちらかが定番のスタイルです。

それでも、なおもDockerに.NET環境を閉じて運営したいという場合、
以下を参照しDockerの記事を探してください。

.NET系のDockerコンテナ

Dockerを利用する場合、.NET系のコンテナを探すかと思いますが、
日々めまぐるしく更新されていきますので、

Docker Hubで

  • dotnet
  • aspnet

のいずれかで検索してお目当てのものを見つけるのが良いでしょう

.NET Core「サンプル」の Docker イメージのDockerイメージとしては
次の4つのものが候補となります。

  • mcr.microsoft.com/dotnet/core/samples:dotnetapp
  • mcr.microsoft.com/dotnet/core/samples:aspnetapp
  • mcr.microsoft.com/dotnet/core/samples:wcfservice
  • mcr.microsoft.com/dotnet/core/samples:wcfclient

.NET系のDockerコンテナへのアクセスの最も簡単な例

Dockerを利用するとすれば、その主な利用用途は、
単純に.NET系のコンソールの実行か、
もしくは ASP.NETサーバーの実行でしょう。

.NET コンソールアプリの実行

docker pull mcr.microsoft.com/dotnet/core/samples:dotnetapp

ASP.NETサーバーの実行

docker run -d -p 8080:80 mcr.microsoft.com/dotnet/core/samples:aspnetapp

ブラウザで

https://localhost:8080

へとアクセス。