code: func deployNginx(client *sshClient, network string, port int, nocache bool) ([]byte, error) {
  	log.Info("Deploying nginx reverse-proxy", "server", client.server, "port", port)
  
  	// Generate the content to upload to the server
  	workdir := fmt.Sprintf("%d", rand.Int63())
  	files := make(map[string][]byte)
  
  	dockerfile := new(bytes.Buffer)
  	template.Must(template.New("").Parse(nginxDockerfile)).Execute(dockerfile, nil)
  	files[filepath.Join(workdir, "Dockerfile")] = dockerfile.Bytes()
  
  	composefile := new(bytes.Buffer)
  	template.Must(template.New("").Parse(nginxComposefile)).Execute(composefile, map[string]interface{}{
  		"Network": network,
  		"Port":    port,
  	})
  	files[filepath.Join(workdir, "docker-compose.yaml")] = composefile.Bytes()
  
  	// Upload the deployment files to the remote server (and clean up afterwards)
  	if out, err := client.Upload(files); err != nil {
  		return out, err
  	}
  	defer client.Run("rm -rf " + workdir)
  
  	// Build and deploy the reverse-proxy service
  	if nocache {
  		return nil, client.Stream(fmt.Sprintf("cd %s && docker-compose -p %s build --pull --no-cache && docker-compose -p %s up -d --force-recreate --timeout 60", workdir, network, network))
  	}
  	return nil, client.Stream(fmt.Sprintf("cd %s && docker-compose -p %s up -d --build --force-recreate --timeout 60", workdir, network))
  }
docs: // deployNginx deploys a new nginx reverse-proxy container to expose one or more
  // HTTP services running on a single host. If an instance with the specified
  // network name already exists there, it will be overwritten!