diff --git a/pkg/compose/build.go b/pkg/compose/build.go
index 694c345c5..b2392ca6f 100644
--- a/pkg/compose/build.go
+++ b/pkg/compose/build.go
@@ -373,15 +373,19 @@ func addSecretsConfig(project *types.Project, service types.ServiceConfig) (sess
 	var sources []secretsprovider.Source
 	for _, secret := range service.Build.Secrets {
 		config := project.Secrets[secret.Source]
+		id := secret.Source
+		if secret.Target != "" {
+			id = secret.Target
+		}
 		switch {
 		case config.File != "":
 			sources = append(sources, secretsprovider.Source{
-				ID:       secret.Source,
+				ID:       id,
 				FilePath: config.File,
 			})
 		case config.Environment != "":
 			sources = append(sources, secretsprovider.Source{
-				ID:  secret.Source,
+				ID:  id,
 				Env: config.Environment,
 			})
 		default:
diff --git a/pkg/e2e/fixtures/build-test/secrets/Dockerfile b/pkg/e2e/fixtures/build-test/secrets/Dockerfile
index 5c2924e61..bd5e12f1b 100644
--- a/pkg/e2e/fixtures/build-test/secrets/Dockerfile
+++ b/pkg/e2e/fixtures/build-test/secrets/Dockerfile
@@ -22,5 +22,5 @@ RUN --mount=type=secret,id=mysecret cat /run/secrets/mysecret > /tmp/actual
 RUN diff /tmp/expected /tmp/actual
 
 RUN echo "bar" > /tmp/expected
-RUN --mount=type=secret,id=envsecret cat /run/secrets/envsecret > tmp/actual
+RUN --mount=type=secret,id=build_secret cat /run/secrets/build_secret > tmp/actual
 RUN diff --ignore-all-space /tmp/expected /tmp/actual
diff --git a/pkg/e2e/fixtures/build-test/secrets/compose.yml b/pkg/e2e/fixtures/build-test/secrets/compose.yml
index bcdd8ae97..c8e794c20 100644
--- a/pkg/e2e/fixtures/build-test/secrets/compose.yml
+++ b/pkg/e2e/fixtures/build-test/secrets/compose.yml
@@ -5,7 +5,8 @@ services:
       context: .
       secrets:
         - mysecret
-        - envsecret
+        - source: envsecret
+          target: build_secret
 
 secrets:
   mysecret: