From 370d224d76fa5d32a12d47e8ae074f35256c2416 Mon Sep 17 00:00:00 2001 From: Oscar Zhou <100548325+oscarzhou-portainer@users.noreply.github.com> Date: Wed, 13 Nov 2024 02:20:41 +1300 Subject: [PATCH] fix(libstack): empty project name [BE-10801] (#115) --- pkg/libstack/compose/composeplugin.go | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/pkg/libstack/compose/composeplugin.go b/pkg/libstack/compose/composeplugin.go index a14be1cf6..3c82ef379 100644 --- a/pkg/libstack/compose/composeplugin.go +++ b/pkg/libstack/compose/composeplugin.go @@ -11,6 +11,7 @@ import ( "github.com/portainer/portainer/pkg/libstack" + "github.com/compose-spec/compose-go/v2/consts" "github.com/compose-spec/compose-go/v2/dotenv" "github.com/compose-spec/compose-go/v2/loader" "github.com/compose-spec/compose-go/v2/types" @@ -72,7 +73,10 @@ func withComposeService( return withCli(ctx, options, func(ctx context.Context, cli *command.DockerCli) error { composeService := compose.NewComposeService(cli) - configDetails := types.ConfigDetails{WorkingDir: options.WorkingDir} + configDetails := types.ConfigDetails{ + WorkingDir: options.WorkingDir, + Environment: make(map[string]string), + } for _, p := range filePaths { configDetails.ConfigFiles = append(configDetails.ConfigFiles, types.ConfigFile{Filename: p}) @@ -102,6 +106,13 @@ func withComposeService( if options.ProjectName != "" { o.SetProjectName(options.ProjectName, true) + } else if nameFromEnv, ok := configDetails.Environment[consts.ComposeProjectName]; ok && nameFromEnv != "" { + o.SetProjectName(nameFromEnv, true) + } else { + o.SetProjectName( + loader.NormalizeProjectName(filepath.Base(configDetails.WorkingDir)), + false, + ) } }, )