「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。

-[[戻る>.NET Core]]
--[[.NET CoreのDockerfile]]
--.NET CoreのDockerコンテナ化

* 目次 [#v3d14097]
#contents

*概要 [#n8836370]
.NET CoreのDockerコンテナ化に必要な検討事項。

*詳細 [#z34cd9bd]

**プログラム [#s4c11639]

***初期化処理 [#ebf51ae0]
Program.cs、Startup.csなどの初期化処理を変更する。
-UseUrlsを設定する。

-SessionストアをRedisに変更するなど。
-カレント・ディレクトリを変更する。
--[[ASP.NET Coreのデータ保護]]
--[[ASP.NET Coreの分散キャッシュ]]

-[[カレント・ディレクトリを変更>https://opentouryo.osscons.jp/index.php?.NET%20Core%E7%89%88%E3%81%AE%E5%88%9D%E6%9C%9F%E5%8C%96%E5%87%A6%E7%90%86#y1939e2f]]する。

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

***プロジェクト出力に含める。 [#b0d9b7d0]
プロジェクト出力に含めると、~
[[Dockerfile>#ac46adab]]の以下コマンドでコンテナに出力される。
 RUN dotnet publish -c release -o /app
 ...
 COPY --from=build /app ./

***埋め込まれたリソースに変更する。 [#yf610b5d]
埋め込まれたリソースとして埋め込む。

**[[Dockerfile>.NET CoreのDockerfile]] [#ac46adab]

***開発用から本番用に切り替える。 [#df3dcc20]
-https://github.com/NetDevInfraWGinOSSConsortium/OAuth2OidcArchitOnDocker/blob/develop/programs/MultiPurposeAuthSiteCore/MultiPurposeAuthSiteCore/Dockerfile
-
https://github.com/NetDevInfraWGinOSSConsortium/OAuth2OidcArchitOnDocker/blob/develop/DockerHub/Push/MultiPurposeAuthSiteCore/Dockerfile

***必要なファイルを指定のパスにコピーする。 [#be89366a]
-[[プロジェクト出力に含める>#b0d9b7d0]]方式も併用する。
-以下は[[HTTPS化>#r0668323]]するための証明書
 COPY ["MultiPurposeAuthSiteCore/aspnetapp.pfx", "./"] # Added

**通信 [#kf288fe9]

***外部通信・内部通信 [#w83d0b0b]
外部通信か、内部通信かを検討する。

-外部通信
--Docker Composeのportsでコンテナ・ポートをホスト・ポートにマッピングする。
--Cookieを伴う外部通信は[[HTTPS化>#r0668323]]が必要になる事が多い。

-内部通信
--Docker Composeのnetworksで同一のネットワークに含めて通信可能にする。
--内部通信は[[HTTPのまま>#r0668323]]にする必要がある。

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

-参考
--HTTPS 経由 ASP.NET Docker を使用したコア イメージのホスト | Microsoft Docs~
https://docs.microsoft.com/ja-jp/aspnet/core/security/docker-https

**設定 [#b33e15fb]

***URLから仮想ディレクトリを削除する。 [#e24936ad]
コンテナの場合はルートディレクトリは仮想ディレクトリでない。

***パスをLinux使用に変更する。 [#c7e4d9c5]
-WindowsパスだとLinux上で認識しない。
-標準でLinuxパスにしてしまっても良い。~
LinuxパスはWindows上で認識するため。

***環境変数で設定を上書き可能にする。 [#q1d15011]
-環境変数は、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;

*参考 [#jf8e9cec]

**github.com [#e0098bf0]
以下を比較すると良い。
-https://github.com/OpenTouryoProject/
-https://github.com/NetDevInfraWGinOSSConsortium

**OSSコンソーシアム [#x50f21bf]

***Open 棟梁 Wiki [#ob013b79]
[[Docker対応>https://opentouryo.osscons.jp/index.php?Docker%E5%AF%BE%E5%BF%9C]]

***開発基盤部会 Wiki [#l2982418]
[[コンテナ化する際の設定ポリシー>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?%E3%82%B3%E3%83%B3%E3%83%86%E3%83%8A%E5%8C%96%E3%81%99%E3%82%8B%E9%9A%9B%E3%81%AE%E8%A8%AD%E5%AE%9A%E3%83%9D%E3%83%AA%E3%82%B7%E3%83%BC]]

----
Tags: [[:.NET開発]], [[:.NET Core]], [[:仮想化]]

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS