Skip to content

Commit db06224

Browse files
authored
Use WithContainerFiles in adminer integeration (#673)
1 parent 39210f3 commit db06224

File tree

1 file changed

+21
-13
lines changed

1 file changed

+21
-13
lines changed

src/CommunityToolkit.Aspire.Hosting.Adminer/AdminerBuilderExtensions.cs

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -46,27 +46,35 @@ public static IResourceBuilder<AdminerContainerResource> AddAdminer(this IDistri
4646
}
4747
else
4848
{
49-
var AdminerContainer = new AdminerContainerResource(name);
50-
var AdminerContainerBuilder = builder.AddResource(AdminerContainer)
49+
var adminerContainer = new AdminerContainerResource(name);
50+
var adminerContainerBuilder = builder.AddResource(adminerContainer)
5151
.WithImage(AdminerContainerImageTags.Image, AdminerContainerImageTags.Tag)
5252
.WithImageRegistry(AdminerContainerImageTags.Registry)
5353
.WithHttpEndpoint(targetPort: 8080, port: port, name: AdminerContainerResource.PrimaryEndpointName)
5454
.WithUrlForEndpoint(AdminerContainerResource.PrimaryEndpointName, e => e.DisplayText = "Adminer Dashboard")
5555
.ExcludeFromManifest();
5656

57-
var assembly = Assembly.GetExecutingAssembly();
58-
var stream = assembly.GetManifestResourceStream("CommunityToolkit.Aspire.Hosting.Adminer.login-servers.php") ?? throw new InvalidOperationException("Unable to load embedded resource 'login-servers.php'.");
59-
var tempFile = Path.GetTempFileName();
57+
adminerContainerBuilder.WithContainerFiles(
58+
destinationPath: "/var/www/html/plugins-enabled",
59+
callback: async (context, ct) =>
60+
{
61+
var assembly = Assembly.GetExecutingAssembly();
62+
using var stream = assembly.GetManifestResourceStream("CommunityToolkit.Aspire.Hosting.Adminer.login-servers.php") ?? throw new InvalidOperationException("Unable to load embedded resource 'login-servers.php'.");
6063

61-
using (var fileStream = new FileStream(tempFile, FileMode.Create, FileAccess.Write))
62-
{
63-
stream.CopyTo(fileStream);
64-
}
64+
using var reader = new StreamReader(stream);
65+
var contents = await reader.ReadToEndAsync(ct);
6566

66-
// Refactor this to use WithContainerFiles API when Aspire 9.2 available
67-
AdminerContainerBuilder.WithBindMount(tempFile, "/var/www/html/plugins-enabled/login-servers.php", isReadOnly: true);
67+
return [
68+
new ContainerFile
69+
{
70+
Contents = contents,
71+
Name = "login-servers.php",
72+
}
73+
];
74+
}
75+
);
6876

69-
return AdminerContainerBuilder;
77+
return adminerContainerBuilder;
7078
}
7179
}
72-
}
80+
}

0 commit comments

Comments
 (0)