|  | @@ -18,6 +18,7 @@ package compose
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  import (
 | 
	
		
			
				|  |  |  	"context"
 | 
	
		
			
				|  |  | +	"errors"
 | 
	
		
			
				|  |  |  	"fmt"
 | 
	
		
			
				|  |  |  	"os"
 | 
	
		
			
				|  |  |  	"os/signal"
 | 
	
	
		
			
				|  | @@ -36,11 +37,6 @@ func (s *composeService) RunOneOffContainer(ctx context.Context, project *types.
 | 
	
		
			
				|  |  |  		return 0, err
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -	start := cmd.NewStartOptions()
 | 
	
		
			
				|  |  | -	start.OpenStdin = !opts.Detach && opts.Interactive
 | 
	
		
			
				|  |  | -	start.Attach = !opts.Detach
 | 
	
		
			
				|  |  | -	start.Containers = []string{containerID}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |  	// remove cancellable context signal handler so we can forward signals to container without compose to exit
 | 
	
		
			
				|  |  |  	signal.Reset()
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -49,9 +45,14 @@ func (s *composeService) RunOneOffContainer(ctx context.Context, project *types.
 | 
	
		
			
				|  |  |  	go cmd.ForwardAllSignals(ctx, s.dockerCli, containerID, sigc)
 | 
	
		
			
				|  |  |  	defer signal.Stop(sigc)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -	err = cmd.RunStart(s.dockerCli, &start)
 | 
	
		
			
				|  |  | -	if sterr, ok := err.(cli.StatusError); ok {
 | 
	
		
			
				|  |  | -		return sterr.StatusCode, nil
 | 
	
		
			
				|  |  | +	err = cmd.RunStart(s.dockerCli, &cmd.StartOptions{
 | 
	
		
			
				|  |  | +		OpenStdin:  !opts.Detach && opts.Interactive,
 | 
	
		
			
				|  |  | +		Attach:     !opts.Detach,
 | 
	
		
			
				|  |  | +		Containers: []string{containerID},
 | 
	
		
			
				|  |  | +	})
 | 
	
		
			
				|  |  | +	var stErr cli.StatusError
 | 
	
		
			
				|  |  | +	if errors.As(err, &stErr) {
 | 
	
		
			
				|  |  | +		return stErr.StatusCode, nil
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  	return 0, err
 | 
	
		
			
				|  |  |  }
 |