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))