dockerimg: Use temp dir for temporary Dockerfile

Co-Authored-By: sketch <hello@sketch.dev>
Change-ID: s9af68b5763c2d5f0k
diff --git a/dockerimg/dockerimg.go b/dockerimg/dockerimg.go
index 279309f..2fd8bb7 100644
--- a/dockerimg/dockerimg.go
+++ b/dockerimg/dockerimg.go
@@ -709,11 +709,17 @@
 		if err != nil {
 			return "", fmt.Errorf("create dockerfile: %w", err)
 		}
-		dockerfilePath = filepath.Join(cwd, tmpSketchDockerfile)
+		// Create a unique temporary directory for the Dockerfile
+		tmpDir, err := os.MkdirTemp("", "sketch-docker-*")
+		if err != nil {
+			return "", fmt.Errorf("failed to create temporary directory: %w", err)
+		}
+		dockerfilePath = filepath.Join(tmpDir, tmpSketchDockerfile)
 		if err := os.WriteFile(dockerfilePath, []byte(generatedDockerfile), 0o666); err != nil {
 			return "", err
 		}
-		defer os.Remove(dockerfilePath)
+		// Remove the temporary directory and all contents when done
+		defer os.RemoveAll(tmpDir)
 
 		if verbose {
 			fmt.Fprintf(os.Stderr, "generated Dockerfile in %s:\n\t%s\n\n", time.Since(start).Round(time.Millisecond), strings.Replace(generatedDockerfile, "\n", "\n\t", -1))