{"id":17777950,"url":"https://github.com/kazenetu/blazorssr-practice","last_synced_at":"2026-04-29T18:31:54.995Z","repository":{"id":259043113,"uuid":"875533905","full_name":"kazenetu/BlazorSSR-Practice","owner":"kazenetu","description":null,"archived":false,"fork":false,"pushed_at":"2025-02-02T13:32:35.000Z","size":23045,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-02T14:28:15.537Z","etag":null,"topics":["blazor","blazor-server","csharp"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kazenetu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-10-20T08:34:43.000Z","updated_at":"2025-02-01T05:32:26.000Z","dependencies_parsed_at":"2024-10-25T16:55:26.877Z","dependency_job_id":"3a59a5e3-fd26-4659-bd87-d17ba23a28b8","html_url":"https://github.com/kazenetu/BlazorSSR-Practice","commit_stats":{"total_commits":44,"total_committers":1,"mean_commits":44.0,"dds":0.0,"last_synced_commit":"9c4302c90d4a9dd22a48a963435aeac2b858e004"},"previous_names":["kazenetu/blazorssr-practice"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kazenetu%2FBlazorSSR-Practice","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kazenetu%2FBlazorSSR-Practice/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kazenetu%2FBlazorSSR-Practice/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kazenetu%2FBlazorSSR-Practice/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kazenetu","download_url":"https://codeload.github.com/kazenetu/BlazorSSR-Practice/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":237637094,"owners_count":19342500,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["blazor","blazor-server","csharp"],"created_at":"2024-10-27T00:03:20.317Z","updated_at":"2026-04-29T18:31:54.951Z","avatar_url":"https://github.com/kazenetu.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# BlazorSSR-Practice\r\nBlazor静的サーバーレンダリング (SSR) の実装確認\r\n\r\n## 実行環境\r\n* .NET8 SDK\r\n\r\n## デバッグ時のID/パスワード\r\n* aa/aa\r\n* Docoker利用時\r\n   * admin/admin\r\n\r\n## ライセンス\r\n* [MITライセンス](LICENSE)  \r\n* 使用パッケージは[THIRD-PARTY-NOTICES.txt](THIRD-PARTY-NOTICES.txt)を参照\r\n\r\n## 実行方法\r\n* ```dotnet run --project WebApp/WebApp.csproj```\r\n* ワンタイムキー有効\r\n  * 実行時にパラメータ指定  \r\n    ```dotnet run --project WebApp/WebApp.csproj -- -p Settings:RequiredAuthentication=true```\r\n  * appsettings.json設定  \r\n    ```json\r\n    {\r\n        \"Settings\": {\r\n            \"RequiredAuthentication\": \"true\"\r\n        }\r\n    }\r\n\r\n    ```\r\n\r\n## 注意\r\n* レイアウト崩れが発生した場合は```dotnet clean```を試すこと\r\n\r\n## フォルダ構成\r\n```\r\nRoot\r\n├─ExampleFiles      // ファイルアップロードサンプル用アップロードファイル\r\n├─PdfReport         // PDFSharpを利用したPDF出力\r\n│ ├─DataLists      // PDF出力用データリスト\r\n│ ├─Interfaces     // PDF用インターフェイス\r\n│ ├─Layouts        // PDF出力用レイアウト(C#ソースコードでのPDF定義)\r\n│ └─assets         // フォントファイルを格納する\r\n├─Tools\r\n│ └─Create         // スケルトンコード生成ツール\r\n│    └─Templates   // モード別のソースコード自動生成用テンプレート\r\n├─WebApp\r\n└─WebApp.sln\r\n　 ├─Components    // ページやパーツ、ナビゲーションを格納\r\n　 │ ├─Layout\r\n　 │ ├─Pages\r\n　 │ ├─Parts        // ページングなどのパーツを格納\r\n　 │ └─Providers    // SessionStorageなどを管理するクラスを格納\r\n　 ├─Components    // ページやパーツ、ナビゲーションを格納\r\n　 ├─DI             // DI設定\r\n　 ├─DBAccess       // DBアクセスクラス\r\n　 ├─Extentions     // 拡張関数を格納\r\n　 ├─Models         // Repositoryとページで利用するModelクラス\r\n　 ├─Repositories   // 「SQL発行とModelクラスを返す」メソッド群\r\n　 ├─Interfaces     // DI設定用インターフェイス\r\n　 └─assets         // SQLiteファイルを格納する(デバッグ時に利用)\r\n```\r\n\r\n## ログ出力\r\nNLogを利用している。  \r\n* ```@inject ILogger\u003cクラス名\u003e Logger```  \r\n  例:@inject ILogger\u003c**Login**\u003e Logger\r\n\r\n* 通常ログ：Logger.LogInformation(**await GetLogMessage(\"開始\")**);\r\n* 例外ログ：Logger.LogError(await GetLogError(ex));\r\n\r\n例：ログイン処理\r\n```\r\n/// \u003csummary\u003e\r\n/// ログイン\r\n/// \u003c/summary\u003e\r\n/// \u003cparam name=\"editContext\"\u003e\u003c/param\u003e\r\nprivate async void SubmitLogin(EditContext editContext)\r\n{\r\n    try\r\n    {\r\n        Logger.LogInformation(await GetLogMessage(\"開始\"));\r\n\r\n        // エラーメッセージクリア\r\n        errorMessages.Clear();\r\n\r\n        // 未入力チェック\r\n        var loginModel = editContext.Model as LoginModel;\r\n        if (loginModel?.ID is null)\r\n        {\r\n            // エラーメッセージ\r\n            errorMessages.Add(\"IDを入力してください。\");\r\n        }\r\n        if (loginModel?.Password is null)\r\n        {\r\n            // エラーメッセージ\r\n            errorMessages.Add(\"パスワードを入力してください。\");\r\n        }\r\n        if (errorMessages.Any()) return;\r\n\r\n        Logger.LogInformation(await GetLogMessage($\"ログインチェック前 ログインID:{loginModel!.ID}\"));\r\n        if (!EqalsPassword(loginModel!))\r\n        {\r\n            errorMessages.Add(\"IDまたはパスワードが間違っています。\");\r\n        }\r\n        if (errorMessages.Any()) return;\r\n\r\n        // ログイン成功\r\n        var userModel = userRepository.GetUser(loginModel!.ID!);\r\n        await SetAsync(UserModel.SessionFullName, userModel!.Fullname);\r\n        await SetAsync(UserModel.SessionLoggedIn, true);\r\n        await SetAsync(UserModel.SessionAdminRole, userModel!.AdminRole);\r\n        await SetAsync(UserModel.SessionUser, userModel.Serialize());\r\n\r\n        Logger.LogInformation(await GetLogMessage($\"ログイン成功\"));\r\n\r\n        // 画面遷移\r\n        Navigation.NavigateTo(\"/\");\r\n        Navigation.Refresh(true);\r\n    }\r\n    catch(Exception ex)\r\n    {\r\n        Logger.LogError(ex, await GetLogError(ex));\r\n        GotoErrorPage();\r\n    }\r\n    finally{\r\n        Logger.LogInformation(await GetLogMessage(\"終了\"));\r\n    }\r\n}\r\n```\r\n↓  \r\nログ出力結果\r\n```\r\n2024-10-30 19:24:59.1636||INFO|WebApp.Components.Pages.Login|開始 url=http://localhost:5034/login method=SubmitLogin \r\n2024-10-30 19:24:59.1636||INFO|WebApp.Components.Pages.Login|ログインチェック前 ログインID:aa url=http://localhost:5034/login method=SubmitLogin \r\n2024-10-30 19:24:59.1994||INFO|WebApp.Components.Pages.Login|aa Aさん ログイン成功 url=http://localhost:5034/login method=SubmitLogin \r\n2024-10-30 19:24:59.2046||INFO|WebApp.Components.Pages.Login|aa Aさん 終了 url=http://localhost:5034/ method=SubmitLogin \r\n```\r\n\r\n## ソースコード生成ツール\r\nモード別にスケルトンコード生成するツール。\r\n### モード\r\n* 一覧\r\n* 編集\r\n* アップロード\r\n* テンプレート(必要最低限のスケルトンコード)\r\n* スニペット「PDF」(実装例)\r\n* スニペット「CSV」(実装例)\r\n\r\n### 生成ファイル\r\nカレントパスにOutputディレクトリに下記を生成する\r\n* Components/Pages/{クラス名}.razor\r\n* DI/DI{クラス名}.cs\r\n* Models/{クラス名}Model.cs\r\n* Models/Input{クラス名}Model.cs  \r\n  → モード edit/upload/template 時に生成\r\n* Repositories/{ClassName}Repository.cs\r\n* Repositories/IRepository/I{ClassName}Repository.cs\r\n\r\n### コマンド\r\n```sh\r\n#ルートパス上で実行\r\ndotnet run --project Tools/Create/Create.csproj \u003cRunMode\u003e　\u003curi\u003e [options]\r\n```\r\n\r\n\u003ch4\u003e○必須パラメータ\u003c/h4\u003e  \r\n\r\n|パラメータ名|設定値|概要|\r\n|---|---|---|\r\n|RunMode|list:一覧モード\u003cbr\u003eedit:詳細\u003cbr\u003eupload:アップロード\u003cbr\u003etemplate:必要最低限のスケルトンコード\u003cbr\u003etips_pdf:スニペット「PDF」\u003cbr\u003etips_csv:スニペット「CSV」|スケルトン生成モード|\r\n|uri|例）order-list|ページのURI\u003cbr\u003euriからクラス名を自動作成する\u003cbr\u003e例）OderList|\r\n\r\n\r\n\u003ch4\u003e○オプションパラメータ\u003c/h4\u003e  \r\n\r\n|パラメータ名|設定値|概要|\r\n|---|---|---|\r\n|--edit_key_type\u003cbr\u003e-ekt|例）string|型情報(省略時:int)|\r\n|--title|例）一覧|タイトル名(省略時:クラス名)|\r\n|--repository\u003cbe\u003e-rep|例）Shred|共通リポジトリ名※プレフィックスのみ(省略時:クラス名)|\r\n\r\n### 実行例\r\n  ```sh\r\n   #一覧ページ生成　ページuri:order-list (クラス名:OrderList) キー型:int(初期値) タイトル名:クラス名(OrderList) リポジトリ名:クラス名(OrderList)\r\n  dotnet run --project Tools/Create/Create.csproj list order-list \r\n\r\n  #詳細ページ生成　ページuri:order-edit (クラス名:OrderEdit) キー型:int(初期値) タイトル名:クラス名(OrderEdit) リポジトリ名:クラス名(OrderEdit)\r\n  dotnet run --project Tools/Create/Create.csproj edit order-edit\r\n\r\n  #アップロードページ生成　ページuri:order-upload (クラス名:OrderUpload) キー型:int(初期値) タイトル名:クラス名(OrderUpload) リポジトリ名:クラス名(OrderUpload)\r\n  dotnet run --project Tools/Create/Create.csproj upload order-upload\r\n\r\n  #テンプレートページ※生成　ページuri:ex-template (クラス名:ExTemplate) キー型:int(初期値) タイトル名:クラス名(ExTemplate) リポジトリ名:クラス名(ExTemplate)\r\n  #※必要最低限のスケルトンコード\r\n  dotnet run --project Tools/Create/Create.csproj template ex-template\r\n\r\n  #スニペット「PDF」ページ生成　ページuri:ex-pdf (クラス名:ExPdf) キー型:int(初期値)  タイトル名:クラス名(ExPdf) リポジトリ名:クラス名(ExPdf)\r\n  dotnet run --project Tools/Create/Create.csproj tips_pdf ex-pdf \r\n\r\n  #スニペット「CSV」ページ生成　ページuri:ex-csv (クラス名:ExCsv) キー型:int(初期値) タイトル名:クラス名(ExCsv) リポジトリ名:クラス名(ExCsv)\r\n  dotnet run --project Tools/Create/Create.csproj tips_csv ex-csv\r\n ```\r\n\r\n* オプション:型情報指定  \r\n ```sh\r\n  #一覧ページ生成　ページuri:order-list (クラス名:OrderList) キー型:string タイトル名:クラス名(OrderList) リポジトリ名:クラス名(OrderList)\r\n   dotnet run --project Tools/Create/Create.csproj list order-list --edit_key_type string \r\n\r\n  #詳細ページ生成　ページuri:order-edit (クラス名:OrderEdit) キー型:string タイトル名:クラス名(OrderEdit) リポジトリ名:クラス名(OrderEdit)\r\n  dotnet run --project Tools/Create/Create.csproj edit order-edit --edit_key_type string \r\n\r\n  #アップロードページ生成　ページuri:order-upload (クラス名:OrderUpload) キー型:string タイトル名:クラス名(OrderUpload) リポジトリ名:クラス名(OrderUpload)\r\n  dotnet run --project Tools/Create/Create.csproj upload order-upload --edit_key_type string \r\n\r\n  #テンプレートページ※生成　ページuri:ex-template (クラス名:ExTemplate) キー型:string タイトル名:クラス名(ExTemplate) リポジトリ名:クラス名(ExTemplate)\r\n  #※必要最低限のスケルトンコード\r\n  dotnet run --project Tools/Create/Create.csproj template ex-template --edit_key_type string \r\n\r\n  #スニペット「PDF」ページ生成　ページuri:ex-pdf (クラス名:ExPdf) キー型:string タイトル名:クラス名(ExPdf) リポジトリ名:クラス名(ExPdf)\r\n  dotnet run --project Tools/Create/Create.csproj tips_pdf ex-pdf --edit_key_type string \r\n\r\n  #スニペット「CSV」ページ生成　ページuri:ex-csv (クラス名:ExCsv) キー型:string タイトル名:クラス名(ExCsv) リポジトリ名:クラス名(ExCsv)\r\n  dotnet run --project Tools/Create/Create.csproj tips_csv ex-csv --edit_key_type string \r\n ```\r\n\r\n* オプション:型情報、タイトル指定  \r\n ```sh\r\n  #一覧ページ生成　ページuri:order-list (クラス名:OrderList) キー型:string タイトル名:一覧 リポジトリ名:クラス名(OrderList)\r\n   dotnet run --project Tools/Create/Create.csproj list order-list --edit_key_type string --title \"一覧\"\r\n\r\n  #詳細ページ生成　ページuri:order-edit (クラス名:OrderEdit) キー型:string タイトル名:編集 リポジトリ名:クラス名(OrderEdit)\r\n  dotnet run --project Tools/Create/Create.csproj edit order-edit --edit_key_type string --title \"編集\"\r\n\r\n  #アップロードページ生成　ページuri:order-upload (クラス名:OrderUpload) キー型:string タイトル名:アップロード リポジトリ名:クラス名(OrderUpload)\r\n  dotnet run --project Tools/Create/Create.csproj upload order-upload --edit_key_type string --title \"アップロード\"\r\n\r\n  #テンプレートページ※生成　ページuri:ex-template (クラス名:ExTemplate) キー型:string タイトル名:テンプレート リポジトリ名:クラス名(ExTemplate)\r\n  #※必要最低限のスケルトンコード\r\n  dotnet run --project Tools/Create/Create.csproj template ex-template --edit_key_type string --title \"テンプレート\"\r\n\r\n  #スニペット「PDF」ページ生成　ページuri:ex-pdf (クラス名:ExPdf) キー型:string タイトル名:スニペット「PDF」 リポジトリ名:クラス名(ExPdf)\r\n  dotnet run --project Tools/Create/Create.csproj tips_pdf ex-pdf --edit_key_type string --title \"スニペット「PDF」\"\r\n\r\n  #スニペット「CSV」ページ生成　ページuri:ex-csv (クラス名:ExCsv) キー型:string タイトル名:スニペット「CSV」 リポジトリ名:クラス名(ExCsv)\r\n  dotnet run --project Tools/Create/Create.csproj tips_csv ex-csv --edit_key_type string --title \"スニペット「CSV」\"\r\n ```\r\n\r\n* オプション:型情報、タイトル、リポジトリ指定  \r\n ```sh\r\n  #一覧ページ生成　ページuri:order-list (クラス名:OrderList) キー型:string タイトル名:一覧 リポジトリ名:Shared\r\n  dotnet run --project Tools/Create/Create.csproj list order-list --edit_key_type string --title \"一覧\" -rep Shared\r\n\r\n  #詳細ページ生成　ページuri:order-edit (クラス名:OrderEdit) キー型:string タイトル名:編集 リポジトリ名:Shared\r\n  dotnet run --project Tools/Create/Create.csproj edit order-edit --edit_key_type string --title \"編集\" -rep Shared\r\n\r\n  #アップロードページ生成　ページuri:order-upload (クラス名:OrderUpload) キー型:string タイトル名:アップロード リポジトリ名:Shared\r\n  dotnet run --project Tools/Create/Create.csproj upload order-upload --edit_key_type string --title \"アップロード\" -rep Shared\r\n\r\n  #テンプレートページ※生成　ページuri:ex-template (クラス名:ExTemplate) キー型:string タイトル名:テンプレート リポジトリ名:Shared\r\n  #※必要最低限のスケルトンコード\r\n  dotnet run --project Tools/Create/Create.csproj template ex-template --edit_key_type string --title \"テンプレート\" -rep Shared\r\n\r\n  #スニペット「PDF」ページ生成　ページuri:ex-pdf (クラス名:ExPdf) キー型:string タイトル名:スニペット「PDF」 リポジトリ名:Shared\r\n  dotnet run --project Tools/Create/Create.csproj tips_pdf ex-pdf --edit_key_type string --title \"スニペット「PDF」\" -rep Shared\r\n\r\n  #スニペット「CSV」ページ生成　ページuri:ex-csv (クラス名:ExCsv) キー型:string タイトル名:スニペット「CSV」 リポジトリ名:Shared\r\n  dotnet run --project Tools/Create/Create.csproj tips_csv ex-csv --edit_key_type string --title \"スニペット「CSV」\" -rep Shared\r\n ```\r\n\r\n## マスター用ソースコード生成ツール\r\nマスタ一覧ページ・編集ページのスケルトンコード生成するツール。\r\n\r\n### 生成ファイル\r\nカレントパスにOutputディレクトリに下記を生成する\r\n* Components/Pages/{クラス名}List.razor\r\n* Components/Pages/{クラス名}Edit.razor\r\n* DI/DI{クラス名}.cs\r\n* Models/{クラス名}Model.cs\r\n* Models/Input{クラス名}Model.cs  \r\n* Repositories/{ClassName}Repository.cs\r\n* Repositories/IRepository/I{ClassName}Repository.cs\r\n\r\n### コマンド\r\n```sh\r\n#ルートパス上で実行\r\ndotnet run --project Tools/CreateMaster/CreateMaster.csproj \u003cDBモード\u003e　\u003c接続文字列\u003e \u003cテーブル名\u003e\r\n```\r\n\r\n\u003ch4\u003e○必須パラメータ\u003c/h4\u003e  \r\n\r\n|パラメータ名|設定値|概要|\r\n|---|---|---|\r\n|DBモード|SQLite\u003cbr\u003ePostgreSQL|DBの設定|\r\n|接続文字列|SQLite：SQLiteファイル(.db)のパス\u003cbr\u003ePostgreSQL：Server=\u003cサーバー\u003e;Port=\u003cポート番号\u003e;User Id=\u003cユーザID\u003e;Password=\u003cパスワード\u003e;Database=\u003cDB名\u003e\u003e|SQLiteはファイルパスを指定|\r\n|テーブル名|マスターテーブル名|物理テーブル名|\r\n\r\n\u003ch4\u003e○オプションパラメータ\u003c/h4\u003e  \r\n\r\n|パラメータ名|設定値|概要|\r\n|---|---|---|\r\n|--url_prefix\u003cbr\u003e-u|例）user|@pageに設定するURLのプレフィックス(省略時:クラス名)|\r\n|--use_hyphen\u003cbr\u003e-useHyp|例）false|@urlの値を作成する際、ハイフンかアンダーバーか設定(省略時:true)\u003cbr\u003etrue:ハイフン(-)\u003cbr\u003efalse:アンダーバー(_)|\r\n\r\n### 実行例\r\n  ```sh\r\n   #SQLite　WebApp/assets/Test.db(相対パス)　対象テーブル m_user(ユーザーマスタ)\r\n   dotnet run --project Tools/CreateMaster/CreateMaster.csproj  SQLite \"WebApp/assets/Test.db\" m_user\r\n\r\n\r\n   #PostgreSQL　Docker立ち上げ必須　対象テーブル m_user(ユーザーマスタ)\r\n   dotnet run --project Tools/CreateMaster/CreateMaster.csproj PostgreSQL \"Server=localhost;Port=5433;User Id=test;Password=test;Database=testDB\" m_user\r\n\r\n   #オプションあり：「URLプレフィックス：user、アンダーバー設定」SQLite　WebApp/assets/Test.db(相対パス)　対象テーブル m_user(ユーザーマスタ)\r\n   dotnet run --project Tools/CreateMaster/CreateMaster.csproj  SQLite \"WebApp/assets/Test.db\" m_user --url_prefix user --use_hyphen false\r\n ```\r\n\r\n## 郵便番号データ加工ツール\r\n[日本郵政が配布する郵便番号データ(utf_ken_all.csv)](https://www.post.japanpost.jp/zipcode/dl/utf-zip.html)の加工結果を出力する。\r\n\r\n### 生成ファイル\r\nカレントパスのOutputディレクトリに下記を生成する\r\n* PostData.csv\r\n\r\n### ファイルレイアウト\r\n\r\n|カラム名|補足|\r\n|---|---|\r\n|郵便番号||\r\n|都道府県名カナ||\r\n|市町村名カナ||\r\n|町域名カナ|未設定の場合あり| \r\n|都道府県名||\r\n|市町村名||\r\n|町域名|未設定の場合あり| \r\n|住所|郵便番号検索時に使用| \r\n|住所カナ|郵便番号検索時に使用| \r\n\r\n### コマンド\r\n```sh\r\n#ルートパス上で実行\r\ndotnet run --project Tools/ModifyUtfKenAll/ModifyUtfKenAll.csproj \u003cInputFile\u003e\r\n```\r\n\r\n\u003ch4\u003e○必須パラメータ\u003c/h4\u003e  \r\n\r\n|パラメータ名|設定値|概要|\r\n|---|---|---|\r\n|InputFile|読込むcsvファイルのフルパス|utf_ken_all.csvを指定すること|\r\n\r\n\r\n### 実行例\r\n```sh\r\n#ルートパス上で実行\r\ndotnet run --project Tools/ModifyUtfKenAll/ModifyUtfKenAll.csproj Tools/ModifyUtfKenAll/ExampleFiles/utf_ken_all_tokyo.csv\r\n```\r\n\r\n### Docker実行方法\r\n* **事前準備**\r\n   1. Docker環境構築\r\n      1. Dockerインストール\r\n         * OSによってインストールする(例：WindowsならWSL2など)\r\n\r\n   1. Dockerコンテナのビルド\r\n      1. ```cd Docker```を実行\r\n      1. 初回のみビルドを実行  \r\n         ```docker compose build```\r\n\r\n* **初回デプロイ**\r\n   1. Webアプリケーションをpublishする\r\n      1. WebアプリケーションをLinux用にpublishする  \r\n         ```dotnet publish --runtime linux-x64 --property:PublishDir=\"./bin/Release/source\"```  \r\n         ※```WebApp\\bin\\Release\\source```が作成される\r\n\r\n   1. publish結果をDockerディレクトリにコピーする  \r\n      ```WebApp\\bin\\Release```の「source」ディレクトリを  \r\n      Dockerディレクトリ直下にコピーする\r\n\r\n   1. Docker実行\r\n         ```sh\r\n         docker compose up -d\r\n         ```\r\n   \r\n   1. ローカルブラウザでアクセスできるか確認する  \r\n      ```http://localhost/```\r\n\r\n* **再デプロイ**\r\n   1. Webアプリケーションをpublishする\r\n      1. **ローカル開発環境**：WebアプリケーションをLinux用にpublishする  \r\n         ```dotnet publish --runtime linux-x64 --property:PublishDir=\"./bin/Release/source\"```  \r\n         ※```WebApp\\bin\\Release\\source```が作成される\r\n\r\n   1. publish結果をDockerディレクトリにコピーする  \r\n      ```WebApp\\bin\\Release```の「source」ディレクトリを  \r\n      Dockerディレクトリ直下にコピーする\r\n\r\n   1. Docker再起動  \r\n         ```sh\r\n         docker compose restart\r\n         ```\r\n\r\n   1. ローカルブラウザでアクセスできるか確認する  \r\n      ```http://localhost/```\r\n\r\n* **利用終了**  \r\n   利用終了時は下記を実行する\r\n   1. Dockerコンテナ停止・削除  \r\n         ```sh\r\n         docker compose down\r\n         ```\r\n\r\n* 補足1：**PostgeSQLを利用して開発する**  \r\n   ※Docker実行している前提\r\n   * VisualStudioCode\r\n      * 通常通り開発を行える\r\n      * Webアプリケーションの実行コマンドは下記の通り\r\n         1. ターミナル上で下記を実行  \r\n            ```sh\r\n            dotnet run --project WebApp/WebApp.csproj -- -p Settings:RequiredAuthentication=true - p DB:ConnectionStrings:postgres=\"Server=localhost;Port=5433;User Id=test;Password=test;Database=testDB\" - p DB:Target=\"postgres\"\r\n            ```  \r\n            ※DB接続文字列とPostgeSQL選択をパラメータで指定する\r\n\r\n* 補足2：**初期データをもう一度入れる場合**\r\n   1. Dockerコンテナ停止・削除  \r\n         ```sh\r\n         docker compose down\r\n         ```\r\n\r\n   1. PostgeSQLのボリュームを削除する  \r\n         ```sh\r\n         docker volume rm postgresql_data_blazor\r\n         ```\r\n   1. Docker実行\r\n         ```sh\r\n         docker compose up -d\r\n         ```\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkazenetu%2Fblazorssr-practice","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkazenetu%2Fblazorssr-practice","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkazenetu%2Fblazorssr-practice/lists"}