|  | @@ -538,48 +538,18 @@ class TopLevelCommand(object):
 | 
	
		
			
				|  |  |                  "Please pass the -d flag when using `docker-compose run`."
 | 
	
		
			
				|  |  |              )
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        if options['COMMAND']:
 | 
	
		
			
				|  |  | -            command = [options['COMMAND']] + options['ARGS']
 | 
	
		
			
				|  |  | -        else:
 | 
	
		
			
				|  |  | -            command = service.options.get('command')
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        container_options = {
 | 
	
		
			
				|  |  | -            'command': command,
 | 
	
		
			
				|  |  | -            'tty': not (detach or options['-T'] or not sys.stdin.isatty()),
 | 
	
		
			
				|  |  | -            'stdin_open': not detach,
 | 
	
		
			
				|  |  | -            'detach': detach,
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        if options['-e']:
 | 
	
		
			
				|  |  | -            container_options['environment'] = parse_environment(options['-e'])
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        if options['--entrypoint']:
 | 
	
		
			
				|  |  | -            container_options['entrypoint'] = options.get('--entrypoint')
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        if options['--rm']:
 | 
	
		
			
				|  |  | -            container_options['restart'] = None
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        if options['--user']:
 | 
	
		
			
				|  |  | -            container_options['user'] = options.get('--user')
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        if not options['--service-ports']:
 | 
	
		
			
				|  |  | -            container_options['ports'] = []
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        if options['--publish']:
 | 
	
		
			
				|  |  | -            container_options['ports'] = options.get('--publish')
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |          if options['--publish'] and options['--service-ports']:
 | 
	
		
			
				|  |  |              raise UserError(
 | 
	
		
			
				|  |  |                  'Service port mapping and manual port mapping '
 | 
	
		
			
				|  |  |                  'can not be used togather'
 | 
	
		
			
				|  |  |              )
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        if options['--name']:
 | 
	
		
			
				|  |  | -            container_options['name'] = options['--name']
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        if options['--workdir']:
 | 
	
		
			
				|  |  | -            container_options['working_dir'] = options['--workdir']
 | 
	
		
			
				|  |  | +        if options['COMMAND']:
 | 
	
		
			
				|  |  | +            command = [options['COMMAND']] + options['ARGS']
 | 
	
		
			
				|  |  | +        else:
 | 
	
		
			
				|  |  | +            command = service.options.get('command')
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +        container_options = build_container_options(options, detach, command)
 | 
	
		
			
				|  |  |          run_one_off_container(container_options, self.project, service, options)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      def scale(self, options):
 | 
	
	
		
			
				|  | @@ -780,6 +750,41 @@ def build_action_from_opts(options):
 | 
	
		
			
				|  |  |      return BuildAction.none
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +def build_container_options(options, detach, command):
 | 
	
		
			
				|  |  | +    container_options = {
 | 
	
		
			
				|  |  | +        'command': command,
 | 
	
		
			
				|  |  | +        'tty': not (detach or options['-T'] or not sys.stdin.isatty()),
 | 
	
		
			
				|  |  | +        'stdin_open': not detach,
 | 
	
		
			
				|  |  | +        'detach': detach,
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    if options['-e']:
 | 
	
		
			
				|  |  | +        container_options['environment'] = parse_environment(options['-e'])
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    if options['--entrypoint']:
 | 
	
		
			
				|  |  | +        container_options['entrypoint'] = options.get('--entrypoint')
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    if options['--rm']:
 | 
	
		
			
				|  |  | +        container_options['restart'] = None
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    if options['--user']:
 | 
	
		
			
				|  |  | +        container_options['user'] = options.get('--user')
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    if not options['--service-ports']:
 | 
	
		
			
				|  |  | +        container_options['ports'] = []
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    if options['--publish']:
 | 
	
		
			
				|  |  | +        container_options['ports'] = options.get('--publish')
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    if options['--name']:
 | 
	
		
			
				|  |  | +        container_options['name'] = options['--name']
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    if options['--workdir']:
 | 
	
		
			
				|  |  | +        container_options['working_dir'] = options['--workdir']
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    return container_options
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  def run_one_off_container(container_options, project, service, options):
 | 
	
		
			
				|  |  |      if not options['--no-deps']:
 | 
	
		
			
				|  |  |          deps = service.get_dependency_names()
 |