Skip to content

DNET_ASPNETCoreContainerPolicy

nishi_74322014 edited this page Sep 11, 2026 · 1 revision

ASP.NET Coreをコンテナ化する際の設定ポリシー

概要

  • ASP.NET Coreのコンテナ化のケースをサンプリング
  • コンテナ化する際の段階毎の設定ポリシーの設計メモ

詳細

  • コンテナのチェーンでも言及したとおり、
    コンテナ化にも下記のように段階があることが解る。

  • コレを開発〜テストの工程に適合させるよう、
    プロジェクト構成やconfig設定値を変更して行くと良い。

非コンテナ上で実行

IIS Express上などでの実行。

プロジェクト構成(非コンテナ)

コンテナ化する事を念頭に置き、

  • ファイルの配置方法

    • プロジェクト出力に含めるか、
    • 埋め込まれたりリソース化する。
  • コンテナ化サポート機能の有効化(Docker対応(OTR_DockerSupport.md)の該当節を参照)。

appsettings.json(非コンテナ)

前述のプロジェクト構成に適合した設定を行う。

docker-compose.yml(非コンテナ)

該当なし。

コンテナで実行(開発時)

自分だけコンテナ上で実行、他はコンテナ外で実行。

プロジェクト構成(開発時)

  • ファイルの配置方法

    • プロジェクト出力に含めるか、
    • 埋め込まれたりリソース化するか、
    • ディレクトリに配置する。
      (Visual Studioが自動的に処理する。.NET CoreのDockerfileの該当節を参照)
  • Dockerサポート

  • HTTPとHTTPS

    • 昨今、SameSite属性(3rd Party Cookie)やHTTPが利用し難くなってきている。

    • しかし、HTTPSには証明書が必要になり、この設定などが比較的煩雑である。

      • サーバー側
        ・サービスをHTTPS化するのに証明書(秘密鍵、PFX)が必要になる。
        ・必要に応じ、内部通信用HTTPのため、UseHttpsRedirection()を無効化する。

      • クライアント側
        HTTPS化したサービスにアクセスするため、証明書検証周辺を制御する必要がある。
        (証明書検証の無効化や、内部通信のHTTPS → HTTP化などの方法も選択肢にある)

appsettings.json(開発時)

前述のプロジェクト構成に適合した設定を行う。

docker-compose.yml(開発時)

非コンテナ上の実行からコンテナ上の実行へ
変更する際に必要となる設定変更のテンプレ(コメント化)

  • RedirectとWebAPI

    • Redirectにはlocalhostを使用できるが、

    • WebAPIなど、コンテナ間の通信では、
      以下の名称を使用する必要がある。

  • HTTPとHTTPS

    • Endpointを2つ開ける。

      environment:
        - UseUrl=http://0.0.0.0:5000/;https://0.0.0.0:5001/
    • HTTPSのみホストポートとマップ

      ports:
        - "44300:5001"

コンテナで実行(テスト時)

コンテナ・レジストリに登録する前段階。

プロジェクト構成(テスト時)

  • Docker Hubに登録する用の
    Dockerファイルでのビルドに
    適合する構成に変更が必要になる。

    • NuGet参照の追加
      プロジェクト参照をDLL参照に切り替えた場合、
      参照先プロジェクトのNuGet参照(依存関係パッケージ)
      を、参照元にも追加する必要がある。

    • ファイルの配置方法

      • プロジェクト出力に含めるか、
        (リンク・ファイルが使用できないと言う問題がある)
      • 埋め込まれたりリソース化するか、
      • ディレクトリに配置する。
        Dockerファイルで明示的に配置する)
  • Dockerファイル

    • 開発・デバッグ用のコンテナと、
    • テスト以降用のコンテナで、

    大きく異なるので注意が必要。

  • ファイルのパスが変わる

    • 開発・デバッグ用はWindowsのパス(¥)が利用できる。
    • テスト以降用はLinuxのパス(/)に設定の変更が必要。

※ 参考 (.NET CoreのDockerfile)(OSSコンソーシアムを参照)

appsettings.json(テスト時)

全てコンテナで実行する場合の初期値として設定を行う。

docker-compose.yml(テスト時)

設定無し or 全てコンテナで実行する場合のテンプレ設定(コメント化)。

全てコンテナで実行

  • コンテナ・レジストリに登録した後の利用段階。

  • 全てコンテナで実行可能に構成するが、一部を、
    主に開発のため、コンテナ環境から、離脱させることも可能にする。

プロジェクト構成(全てコンテナ)

該当なし。

appsettings.json(全てコンテナ)

変更なし。

docker-compose.yml(全てコンテナ)

必要に応じて、既定値から、ユーザ毎の設定変更を行う。

参考

Qiita

Microsoft Docs

OSSCコンソーシアム

Wiki

Blog

移行メモ

  • 「ケースをサンプルリング」→「サンプリング」に修正した。
  • 「大きく異る」→「大きく異なる」に修正した。
  • 参考の見出し「OSSコンソーシアム」は、同ページ内から #ka80a589 で参照されており、GitHub Wiki のアンカに置き換えるにあたって 「OSSCコンソーシアム」と表記して一意にした。
  • Open 棟梁 Wiki(opentouryo.osscons.jp)への URL リンクは、 移行先のファイル名(予約名)に置き換えた。
  • マイクロソフト系技術情報 Wiki(techinfoofmicrosofttech.osscons.jp)への URL リンクは、移行済みの コンテナのチェーン / .NET CoreのDockerfile / .NET CoreのDockerコンテナ化 / Visual Studio Tools for Docker / SameSite属性の件 / Docker for Windowsのネットワーク設定 に張り替えた。
  • 同名の見出し(「プロジェクト構成」「appsettings.json」「docker-compose.yml」)が 段階ごとに重複し GitHub Wiki でアンカが衝突するため、 括弧で文脈を補って一意にした。
  • PukiWiki のページ内アンカ(#xxxxxxxx)は GitHub Wiki では再現できないため、 同一ページ内のアンカは見出しから生成されるアンカに張り替え、 他ページのアンカを指すリンクは「〜(ページ名 の該当節を参照)」の形に置き換えた。

Tags: 移行, ASP.NET Core, Docker, コンテナ化, docker-compose, appsettings.json, HTTPS, 設定ポリシー

NetDevInfraWiki

マイクロソフト系技術情報 Wiki
Open 棟梁 Wiki

(未着手)

開発基盤部会 Wiki

移行管理: DONETODO

Clone this wiki locally