マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

.NET CoreのDockerコンテナ化に必要な検討事項。

詳細

プログラム

初期化処理

Program.cs、Startup.csなどの初期化処理を変更する。

  • UseUrls?を設定する。

ファイル

  • 使用するファイルは以下の2つの方法で、コンテナに含める。
  • 何れの方法も、プロジェクト・ファイルの変更が必要になる。

プロジェクト出力に含める。

プロジェクト出力に含めると、
Dockerfileの以下コマンドでコンテナに出力される。

RUN dotnet publish -c release -o /app
...
COPY --from=build /app ./

埋め込まれたリソースに変更する。

埋め込まれたリソースとして埋め込む。

Dockerfile

開発用から本番用に切り替える。

必要なファイルを指定のパスにコピーする。

通信

外部通信・内部通信

外部通信か、内部通信かを検討する。

  • 外部通信
    • Docker Composeのportsでコンテナ・ポートをホスト・ポートにマッピングする。
    • Cookieを伴う外部通信はHTTPS化が必要になる事が多い。
  • 内部通信
    • Docker Composeのnetworksで同一のネットワークに含めて通信可能にする。
    • 内部通信はHTTPのままにする必要がある。

HTTPS化

  • SameSite属性の件でHTTPS化が必要になる。
  • また、内部通信はHTTPでの通信にする。
    • 自己署名証明書の検証ができない。
    • HTTPSリダイレクトを無効化する。
      //app.UseHttpsRedirection();

設定

URLから仮想ディレクトリを削除する。

コンテナの場合はルートディレクトリは仮想ディレクトリでない。

パスをLinux使用に変更する。

  • WindowsパスだとLinux上で認識しない。
  • 標準でLinuxパスにしてしまっても良い。
    LinuxパスはWindows上で認識するため。

環境変数で設定を上書き可能にする。

  • 環境変数は、Docker Composeで設定すると楽。
  • 内部通信のホスト名は、サービス名に変更する。
  • 以下の例ではConnectionString_XXX変数を上書きしている。
     environment:
       - UseUrl=http://0.0.0.0:5000/;https://0.0.0.0:5001/
       - RedisConfig=redis
       - RedisInstanceName=redis
       - ASPNETCORE_Kestrel__Certificates__Default__Password=seigi@123
       - ASPNETCORE_Kestrel__Certificates__Default__Path=/app/aspnetapp.pfx
       - ConnectionString_SQL=Data Source=sqlserver;Initial Catalog=Northwind;User ID=sa;Password=seigi@123;
       - ConnectionString_MCN=Server=mysql;Database=test;User Id=root;Password=seigi@123;
       - ConnectionString_NPS=HOST=postgres;DATABASE=postgres;USER ID=postgres;PASSWORD=seigi@123;

参考

github.com

以下を比較すると良い。

OSSコンソーシアム

Open 棟梁 Wiki

Docker対応

開発基盤部会 Wiki

コンテナ化する際の設定ポリシー


Tags: :.NET開発, :.NET Core, :仮想化


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2021-05-18 (火) 15:39:30 (29d)