Browse Source

do not pass user id on Windows system as engine is not able to handel it

Signed-off-by: Guillaume Lours <[email protected]>
Guillaume Lours 4 months ago
parent
commit
4d47da6dc2
1 changed files with 13 additions and 7 deletions
  1. 13 7
      pkg/bridge/convert.go

+ 13 - 7
pkg/bridge/convert.go

@@ -23,6 +23,7 @@ import (
 	"os"
 	"os/user"
 	"path/filepath"
+	"runtime"
 	"strconv"
 
 	"github.com/compose-spec/compose-go/v2/types"
@@ -112,15 +113,20 @@ func convert(ctx context.Context, dockerCli command.Cli, model map[string]any, o
 			return err
 		}
 
-		usr, err := user.Current()
-		if err != nil {
-			return err
-		}
-		created, err := dockerCli.Client().ContainerCreate(ctx, &container.Config{
+		containerConfig := &container.Config{
 			Image: transformation,
 			Env:   []string{"LICENSE_AGREEMENT=true"},
-			User:  usr.Uid,
-		}, &container.HostConfig{
+		}
+		// On POSIX systems, this is a decimal number representing the uid.
+		// On Windows, this is a security identifier (SID) in a string format and the engine isn't able to manage it
+		if runtime.GOOS != "windows" {
+			usr, err := user.Current()
+			if err != nil {
+				return err
+			}
+			containerConfig.User = usr.Uid
+		}
+		created, err := dockerCli.Client().ContainerCreate(ctx, containerConfig, &container.HostConfig{
 			AutoRemove: true,
 			Binds:      binds,
 		}, &network.NetworkingConfig{}, nil, "")