「[[マイクロソフト系技術情報 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]], [[:仮想化]]