初期条件は次のとおりです。
- 私たちのサービスはコンソールアプリケーションであり、ASP.NET Core Webアプリケーションとは異なり、すぐに使用できるソリューションはありませんでした。
- アプリケーションは、ドッカーコンテナから起動されます。
さて、コンソールアプリケーションでマルチ構成を使用する方法を見てみましょう。まず、開発環境とテスト環境の構成ファイルを作成しましょう。
コンソールアプリケーションにはデフォルトのネストはありません。したがって、.csprojプロジェクトファイルを開いて、以下を追加します。
<ItemGroup>
<Content Include="appsettings.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="appsettings.Dev.json;appsettings.Testing.json;">
<DependentUpon>appsettings.json</DependentUpon>
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
</ItemGroup>
開発環境の名前が付いた添付ファイルがappsettings.jsonファイルに表示されました。
ファイルappsettings.Dev.jsonおよびappsettings.Testing.jsonに、環境に応じて変化する構成の部分を追加します。appsettings.Testing.jsonに必要なパラメーターを追加して、負荷テストループのKafkaトピックの名前を変更しましょう。
{
"Kafka":
{
"EventMainTopicTitle": "Test_EventMain",
"EventDelayTopicTitle": "Test_EventDelay",
"EventRejectTopicTitle": "Test_EventReject"
}
}
サービスの開始時に目的のappsettings.jsonファイルを選択するだけです。これを行うには、Programクラスに変更を加えましょう。
///
private static IServiceProvider ConfigureServices()
{
//
const string environmentVariableName = "ASPNETCORE_ENVIRONMENT";
//
var environmentName =
Environment.GetEnvironmentVariable(environmentVariableName);
var services = new ServiceCollection();
_configuration = new ConfigurationBuilder()
.SetBasePath(Directory.GetParent(AppContext.BaseDirectory).FullName)
.AddJsonFile("appsettings.json")
// json- environmentName
.AddJsonFile($"appsettings.{environmentName}.json")
.AddEnvironmentVariables()
.Build();
services.AddSingleton(_configuration);
services.AddSingleton<KafkaHandler>();
return services.BuildServiceProvider();
}
これで、すべてがドッカーコンテナでサービスを開始する準備が整いました。
コンテナの環境変数を指定する必要があります。これを行うにはいくつかの方法があります。
- コマンドライン
- テキストファイル
- ドッカー作曲
コマンドラインで変数を指定するのをやめました。イメージを作成してコンテナを実行するスクリプトの例を次に示します。
# Build image
# docker build . -t consoleapp
# Run container on Dev
# docker run -d <i>--env ASPNETCORE_ENVIRONMENT=Dev</i> --name app consoleapp
展開用のパイプラインを作成するためのより洗練されたソリューションがありますが、この方法は短時間で実装できます。これは、プロジェクト作成の初期段階で非常に重要です。 プロジェクトでGitHubに
リンクし ます。
あなたの注意と楽しいコーディングに感謝します!