code: func (builder *Dockerfile) Build(config *api.Config) (*api.Result, error) {
  
  	// Handle defaulting of the configuration that is unique to the dockerfile strategy
  	if strings.HasSuffix(config.AsDockerfile, string(os.PathSeparator)) {
  		config.AsDockerfile = config.AsDockerfile + "Dockerfile"
  	}
  	if len(config.AssembleUser) == 0 {
  		config.AssembleUser = "1001"
  	}
  	if !user.IsUserAllowed(config.AssembleUser, &config.AllowedUIDs) {
  		builder.setFailureReason(utilstatus.ReasonAssembleUserForbidden, utilstatus.ReasonMessageAssembleUserForbidden)
  		return builder.result, s2ierr.NewUserNotAllowedError(config.AssembleUser, false)
  	}
  
  	dir, _ := filepath.Split(config.AsDockerfile)
  	if len(dir) == 0 {
  		dir = "."
  	}
  	config.PreserveWorkingDir = true
  	config.WorkingDir = dir
  
  	if config.BuilderImage == "" {
  		builder.setFailureReason(utilstatus.ReasonGenericS2IBuildFailed, utilstatus.ReasonMessageGenericS2iBuildFailed)
  		return builder.result, errors.New("builder image name cannot be empty")
  	}
  
  	if err := builder.Prepare(config); err != nil {
  		return builder.result, err
  	}
  
  	if err := builder.CreateDockerfile(config); err != nil {
  		builder.setFailureReason(utilstatus.ReasonDockerfileCreateFailed, utilstatus.ReasonMessageDockerfileCreateFailed)
  		return builder.result, err
  	}
  
  	builder.result.Success = true
  
  	return builder.result, nil
  }
docs: // Build produces a Dockerfile that when run with the correct filesystem
  // context, will produce the application image.