[backend/startup] Add debug logging for loaded configuration files & allow configuration via environment variables

This commit is contained in:
Laura Hausmann 2024-06-07 20:02:46 +02:00
parent 699e0237b0
commit 068b318c19
No known key found for this signature in database
GPG key ID: D044E84C5BE01605
2 changed files with 15 additions and 5 deletions

View file

@ -4,9 +4,14 @@ public static class ConfigurationBuilderExtensions
{ {
public static IConfigurationBuilder AddCustomConfiguration(this IConfigurationBuilder configuration) public static IConfigurationBuilder AddCustomConfiguration(this IConfigurationBuilder configuration)
{ {
return configuration.AddIniFile(Environment.GetEnvironmentVariable("ICESHRIMP_CONFIG") ?? "configuration.ini", var main = Environment.GetEnvironmentVariable("ICESHRIMP_CONFIG") ?? "configuration.ini";
false, true) var overrides = Environment.GetEnvironmentVariable("ICESHRIMP_CONFIG_OVERRIDES") ??
.AddIniFile(Environment.GetEnvironmentVariable("ICESHRIMP_CONFIG_OVERRIDES") ?? "configuration.overrides.ini", "configuration.overrides.ini";
true, true);
configuration.AddIniFile(main, false, true)
.AddIniFile(overrides, true, true)
.AddEnvironmentVariables();
return configuration;
} }
} }

View file

@ -6,6 +6,7 @@ using Iceshrimp.Backend.Core.Middleware;
using Iceshrimp.Backend.Core.Services; using Iceshrimp.Backend.Core.Services;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Migrations; using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.Extensions.Configuration.Ini;
using Microsoft.Extensions.Options; using Microsoft.Extensions.Options;
using WebPush; using WebPush;
@ -73,6 +74,10 @@ public static class WebApplicationExtensions
await using var scope = app.Services.CreateAsyncScope(); await using var scope = app.Services.CreateAsyncScope();
var provider = scope.ServiceProvider; var provider = scope.ServiceProvider;
var config = (ConfigurationManager)app.Configuration;
var files = config.Sources.OfType<IniConfigurationSource>().Select(p => p.Path);
app.Logger.LogDebug("Loaded configuration files: \n* {files}", string.Join("\n* ", files));
try try
{ {
app.Logger.LogInformation("Validating configuration..."); app.Logger.LogInformation("Validating configuration...");
@ -101,7 +106,7 @@ public static class WebApplicationExtensions
app.Logger.LogInformation("Verifying database connection..."); app.Logger.LogInformation("Verifying database connection...");
if (!await db.Database.CanConnectAsync()) if (!await db.Database.CanConnectAsync())
{ {
app.Logger.LogCritical("Failed to connect to database"); app.Logger.LogCritical("Failed to connect to database. Please make sure your configuration is correct.");
Environment.Exit(1); Environment.Exit(1);
} }