Inilah kondisi awal kami:
- Layanan kami adalah Aplikasi Konsol, dan tidak seperti Aplikasi Web Inti ASP.NET, kami tidak memiliki solusi di luar kotak.
- Aplikasi diluncurkan dari kontainer buruh pelabuhan.
Nah, mari kita lihat bagaimana menggunakan multi konfigurasi dalam aplikasi konsol. Pertama, mari buat file konfigurasi untuk lingkungan Dev dan Pengujian kami:
Tidak ada penyarangan default dalam aplikasi konsol. Oleh karena itu, buka file proyek .csproj dan tambahkan:
<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>
File terlampir dengan nama lingkungan pengembangan muncul di file appsettings.json:
Di file appsettings.Dev.json dan appsettings.Testing.json, tambahkan bagian-bagian konfigurasi yang berubah tergantung pada lingkungan. Mari ubah nama topik Kafka di loop pengujian beban dengan menambahkan parameter yang diperlukan ke appsettings.Testing.json:
{
"Kafka":
{
"EventMainTopicTitle": "Test_EventMain",
"EventDelayTopicTitle": "Test_EventDelay",
"EventRejectTopicTitle": "Test_EventReject"
}
}
Tetap hanya memilih file appsettings.json yang diinginkan selama awal layanan. Untuk melakukan ini, mari buat perubahan pada kelas 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();
}
Sekarang semuanya siap untuk memulai layanan di kontainer buruh pelabuhan.
Tetap menentukan variabel lingkungan untuk penampung. Ada beberapa cara untuk melakukannya:
- garis komando
- file teks
- buruh pelabuhan menulis
Saya berhenti di menentukan variabel pada baris perintah. Berikut ini contoh skrip untuk membuat gambar dan menjalankan container:
# Build image
# docker build . -t consoleapp
# Run container on Dev
# docker run -d <i>--env ASPNETCORE_ENVIRONMENT=Dev</i> --name app consoleapp
Ada solusi yang lebih elegan untuk membuat pipeline untuk penerapan Anda, tetapi metode ini dapat diterapkan dalam waktu singkat, yang sangat penting pada tahap awal pembuatan proyek.
Tautkan ke GitHub dengan proyek tersebut .
Terima kasih atas perhatian Anda dan coding yang menyenangkan!