From 41f4fa93f07fa90e6e5ebf798637d6499379d6ee Mon Sep 17 00:00:00 2001 From: Pat Hartl Date: Fri, 7 Mar 2025 20:44:32 -0600 Subject: [PATCH] Initialize Docker configuration --- .../SettingService.cs | 20 +++++++++++++++---- LANCommander.Server/Dockerfile | 2 +- LANCommander.Server/Program.cs | 3 +++ .../UI/Pages/FirstTimeSetup/Database.razor | 3 ++- .../UI/Pages/FirstTimeSetup/Paths.razor | 10 +++++----- 5 files changed, 27 insertions(+), 11 deletions(-) diff --git a/LANCommander.Server.Services/SettingService.cs b/LANCommander.Server.Services/SettingService.cs index f4cea448..d3959157 100644 --- a/LANCommander.Server.Services/SettingService.cs +++ b/LANCommander.Server.Services/SettingService.cs @@ -6,15 +6,27 @@ namespace LANCommander.Server.Services { public class SettingService { - private const string SettingsFilename = "Settings.yml"; + public static string WorkingDirectory { get; set; } = ""; + private const string FileName = "Settings.yml"; + + public static string SettingsFile + { + get + { + if (!string.IsNullOrWhiteSpace(WorkingDirectory)) + return Path.Combine(WorkingDirectory, FileName); + else + return FileName; + } + } private static Models.Settings Settings { get; set; } public static Models.Settings LoadSettings() { - if (File.Exists(SettingsFilename)) + if (File.Exists(SettingsFile)) { - var contents = File.ReadAllText(SettingsFilename); + var contents = File.ReadAllText(SettingsFile); var deserializer = new DeserializerBuilder() .IgnoreUnmatchedProperties() @@ -49,7 +61,7 @@ namespace LANCommander.Server.Services .WithNamingConvention(new PascalCaseNamingConvention()) .Build(); - File.WriteAllText(SettingsFilename, serializer.Serialize(settings)); + File.WriteAllText(SettingsFile, serializer.Serialize(settings)); Settings = settings; } diff --git a/LANCommander.Server/Dockerfile b/LANCommander.Server/Dockerfile index 2565acab..fcd3045b 100644 --- a/LANCommander.Server/Dockerfile +++ b/LANCommander.Server/Dockerfile @@ -7,4 +7,4 @@ EXPOSE 35891/udp COPY ./published /app -ENTRYPOINT ["dotnet", "LANCommander.Server.dll"] \ No newline at end of file +ENTRYPOINT ["dotnet", "LANCommander.Server.dll", "--docker"] \ No newline at end of file diff --git a/LANCommander.Server/Program.cs b/LANCommander.Server/Program.cs index 6ba36a65..da751cc8 100644 --- a/LANCommander.Server/Program.cs +++ b/LANCommander.Server/Program.cs @@ -25,6 +25,9 @@ var builder = WebApplication.CreateBuilder(args); if (args.Contains("--debugger")) WaitForDebugger(); +if (args.Contains("--docker")) + SettingService.WorkingDirectory = "/app/config"; + builder.AddAsService(); builder.AddLogger(); diff --git a/LANCommander.Server/UI/Pages/FirstTimeSetup/Database.razor b/LANCommander.Server/UI/Pages/FirstTimeSetup/Database.razor index 4a40c2d2..cd8150be 100644 --- a/LANCommander.Server/UI/Pages/FirstTimeSetup/Database.razor +++ b/LANCommander.Server/UI/Pages/FirstTimeSetup/Database.razor @@ -58,7 +58,8 @@ switch (Settings.DatabaseProvider) { case DatabaseProvider.SQLite: - Settings.DatabaseConnectionString = "Data Source=LANCommander.db;Cache=Shared"; + var dbPath = Path.Combine(SettingService.WorkingDirectory, "LANCommander.db"); + Settings.DatabaseConnectionString = $"Data Source={dbPath};Cache=Shared"; break; case DatabaseProvider.MySQL: diff --git a/LANCommander.Server/UI/Pages/FirstTimeSetup/Paths.razor b/LANCommander.Server/UI/Pages/FirstTimeSetup/Paths.razor index 3c9f2c09..9f579f83 100644 --- a/LANCommander.Server/UI/Pages/FirstTimeSetup/Paths.razor +++ b/LANCommander.Server/UI/Pages/FirstTimeSetup/Paths.razor @@ -74,14 +74,14 @@ StorageLocation MediaStorageLocation = new() { - Path = "Media", + Path = Path.Combine(SettingService.WorkingDirectory, "Media"), Type = StorageLocationType.Media, Default = true, }; StorageLocation SavesStorageLocation = new() { - Path = "Saves", + Path = Path.Combine(SettingService.WorkingDirectory, "Saves"), Type = StorageLocationType.Save, Default = true, }; @@ -108,7 +108,7 @@ if (!ArchiveStorageLocations.Any()) ArchiveStorageLocations.Add(new StorageLocation { - Path = "Uploads", + Path = Path.Combine(SettingService.WorkingDirectory, "Uploads"), Type = StorageLocationType.Archive, Default = true, }); @@ -126,7 +126,7 @@ SavesStorageLocation = new StorageLocation { - Path = "Saves", + Path = Path.Combine(SettingService.WorkingDirectory, "Saves"), Type = StorageLocationType.Save, Default = true, }; @@ -144,7 +144,7 @@ MediaStorageLocation = new StorageLocation { - Path = "Media", + Path = Path.Combine(SettingService.WorkingDirectory, "Media"), Type = StorageLocationType.Media, Default = true, };