aspire icon indicating copy to clipboard operation
aspire copied to clipboard

Realm import fails for the Keycloak Integration when using WSL2

Open RobertWeaver opened this issue 1 year ago • 8 comments

Is there an existing issue for this?

  • [X] I have searched the existing issues

Describe the bug

When using the WithRealmImport for Keycloak the container fails to start on Windows WSL2. However on my Apple Silicon laptop it works. I think the issue is similar to using PgAdmin #5379 which also does not work for me.

var keycloak = builder.AddKeycloak("keycloak", 8080)
                      .WithDataVolume()
                      .WithImageTag("latest")
                      .WithRealmImport("../realms");

Expected Behavior

I expect to be able import a realm when using WSL2. 🐧

Steps To Reproduce

I created a repository to help reproduce the issue.

https://github.com/RobertWeaver/AspireKeycloak

Exceptions (if any)

Aspire.Hosting.Dcp.dcpctrl.ContainerReconciler[0] could not create the container {"Container": {"name":"keycloak-wkqsghct"}, "Reconciliation": 3, "error": "docker command 'CreateContainer' returned with non-zero exit code 1: command output: Stdout: '' Stderr: 'Error response from daemon: invalid mount config for type "bind": invalid mount path: 'C:/projects/test/AspireKeycloak/realms' mount path must be absolute\n'"}

.NET Version info

.NET SDK: Version: 9.0.100-preview.7.24407.12 Commit: d672b8a045 Workload version: 9.0.100-manifests.2aef0cee MSBuild version: 17.12.0-preview-24374-02+48e81c6f1

Runtime Environment: OS Name: Windows OS Version: 10.0.20348 OS Platform: Windows RID: win-x64 Base Path: C:\Program Files\dotnet\sdk\9.0.100-preview.7.24407.12\

.NET workloads installed: Configured to use loose manifests when installing new manifests. [aspire] Installation Source: SDK 9.0.100-preview.7, VS 17.12.35209.166, VS 17.11.35208.52 Manifest Version: 8.2.0/8.0.100 Manifest Path: C:\Program Files\dotnet\sdk-manifests\8.0.100\microsoft.net.sdk.aspire\8.2.0\WorkloadManifest.json Install Type: FileBased

Host: Version: 9.0.0-preview.7.24405.7 Architecture: x64 Commit: static

.NET SDKs installed: 6.0.417 [C:\Program Files\dotnet\sdk] 7.0.404 [C:\Program Files\dotnet\sdk] 8.0.400 [C:\Program Files\dotnet\sdk] 9.0.100-preview.7.24407.12 [C:\Program Files\dotnet\sdk]

.NET runtimes installed: Microsoft.AspNetCore.All 2.1.0 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All] Microsoft.AspNetCore.All 2.1.1 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All] Microsoft.AspNetCore.All 2.1.2 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All] Microsoft.AspNetCore.All 2.1.4 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All] Microsoft.AspNetCore.All 2.1.13 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All] Microsoft.AspNetCore.All 2.2.7 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All] Microsoft.AspNetCore.App 2.1.0 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App] Microsoft.AspNetCore.App 2.1.1 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App] Microsoft.AspNetCore.App 2.1.2 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App] Microsoft.AspNetCore.App 2.1.4 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App] Microsoft.AspNetCore.App 2.1.13 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App] Microsoft.AspNetCore.App 2.2.7 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App] Microsoft.AspNetCore.App 3.1.20 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App] Microsoft.AspNetCore.App 5.0.1 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App] Microsoft.AspNetCore.App 5.0.2 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App] Microsoft.AspNetCore.App 5.0.17 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App] Microsoft.AspNetCore.App 6.0.25 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App] Microsoft.AspNetCore.App 6.0.33 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App] Microsoft.AspNetCore.App 7.0.14 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App] Microsoft.AspNetCore.App 7.0.20 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App] Microsoft.AspNetCore.App 8.0.7 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App] Microsoft.AspNetCore.App 8.0.8 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App] Microsoft.AspNetCore.App 9.0.0-preview.7.24406.2 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App] Microsoft.NETCore.App 2.1.0 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App] Microsoft.NETCore.App 2.1.13 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App] Microsoft.NETCore.App 2.2.7 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App] Microsoft.NETCore.App 3.1.20 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App] Microsoft.NETCore.App 5.0.1 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App] Microsoft.NETCore.App 5.0.2 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App] Microsoft.NETCore.App 5.0.17 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App] Microsoft.NETCore.App 6.0.25 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App] Microsoft.NETCore.App 6.0.33 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App] Microsoft.NETCore.App 7.0.14 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App] Microsoft.NETCore.App 7.0.20 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App] Microsoft.NETCore.App 8.0.7 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App] Microsoft.NETCore.App 8.0.8 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App] Microsoft.NETCore.App 9.0.0-preview.7.24405.7 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App] Microsoft.WindowsDesktop.App 3.1.20 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App] Microsoft.WindowsDesktop.App 5.0.17 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App] Microsoft.WindowsDesktop.App 6.0.25 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App] Microsoft.WindowsDesktop.App 6.0.33 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App] Microsoft.WindowsDesktop.App 7.0.14 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App] Microsoft.WindowsDesktop.App 7.0.20 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App] Microsoft.WindowsDesktop.App 8.0.7 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App] Microsoft.WindowsDesktop.App 8.0.8 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App] Microsoft.WindowsDesktop.App 9.0.0-preview.7.24405.2 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]

Other architectures found: x86 [C:\Program Files (x86)\dotnet] registered at [HKLM\SOFTWARE\dotnet\Setup\InstalledVersions\x86\InstallLocation]

Environment variables: Not set

global.json file: Not found

Anything else?

image

RobertWeaver avatar Aug 30 '24 14:08 RobertWeaver

FYI @julioct

eerhardt avatar Aug 30 '24 16:08 eerhardt

I’m guessing we have a general problem with bind mounts when docker is running via WSL.

davidfowl avatar Aug 30 '24 21:08 davidfowl

Is this possibly as simple as us needing to convert the path to the host to the WSL equivalent, e.g. /mnt/c/...?

/Cc @danegsta @karolz-ms

DamianEdwards avatar Aug 31 '24 15:08 DamianEdwards

@DamianEdwards no, the Docker daemon that the CLI is using is running on Windows, so it should be able to handle Windows OS source paths. The use of WSL is just an implementation detail. I am confused why this does not work. The path seems correct and is absolute, so the error message from the Docker daemon does not make sense.

karolz-ms avatar Sep 03 '24 02:09 karolz-ms

@RobertWeaver are you using a manually installed Docker CE daemon running in WSL or Docker Desktop and it's WSL backend?

danegsta avatar Sep 26 '24 00:09 danegsta

Hello @danegsta! šŸ˜€

I using a manually installed Docker CE daemon running on Windows Server 2022.

This is my Docker version... Docker version 27.0.3, build 7d4bcd8

Ths is my Ubuntu... Distributor ID: Ubuntu Description: Ubuntu 22.04.4 LTS Release: 22.04 Codename: jammy

RobertWeaver avatar Sep 26 '24 03:09 RobertWeaver

Unfortunately Aspire on Windows currently assumes either a Docker or Podman Desktop install scenario where the container CLI will handle automatically remapping Windows file paths for the daemon in WSL. With a manual Docker CE install, any references to Windows paths for bind mounts, etc. have to be specified as /mnt/ paths in WSL, but Aspire doesn't know to do that itself.

We do support running the AppHost directly in WSL (just not from Visual Studio) if that's an option for you.

danegsta avatar Sep 30 '24 21:09 danegsta

We can consider this a future runtime combo to support, but not right now. We should document this in the mean time.

davidfowl avatar Oct 01 '24 03:10 davidfowl