Implemented more life cycle handling. Added support for rootless environments

This commit is contained in:
2024-12-27 20:08:05 +01:00
parent 039db22207
commit 92e9f42fbc
21 changed files with 738 additions and 20 deletions

View File

@@ -0,0 +1,41 @@
using Docker.DotNet;
using Docker.DotNet.Models;
using MoonlightServers.Daemon.Models;
using MoonlightServers.DaemonShared.Enums;
namespace MoonlightServers.Daemon.Extensions.ServerExtensions;
public static class ServerImageExtensions
{
public static async Task EnsureDockerImage(this Server server)
{
await server.NotifyTask(ServerTask.PullingDockerImage);
var dockerClient = server.ServiceProvider.GetRequiredService<DockerClient>();
await dockerClient.Images.CreateImageAsync(new()
{
FromImage = server.Configuration.DockerImage
},
new AuthConfig(),
new Progress<JSONMessage>(async message =>
{
if (message.Progress == null)
return;
var percentage = message.Progress.Total > 0
? Math.Round((float)message.Progress.Current / message.Progress.Total * 100f, 2)
: 0d;
server.Logger.LogInformation(
"Docker Image: [{id}] {status} - {percent}",
message.ID,
message.Status,
percentage
);
//await UpdateProgress(server, serviceProvider, percentage);
})
);
}
}