|  | @@ -714,29 +714,24 @@ def merge_service_dicts(base, override, version):
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      if version == V1:
 | 
	
		
			
				|  |  |          legacy_v1_merge_image_or_build(md, base, override)
 | 
	
		
			
				|  |  | -    else:
 | 
	
		
			
				|  |  | -        merge_build(md, base, override)
 | 
	
		
			
				|  |  | +    elif md.needs_merge('build'):
 | 
	
		
			
				|  |  | +        md['build'] = merge_build(md, base, override)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      return dict(md)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  def merge_build(output, base, override):
 | 
	
		
			
				|  |  | -    build = {}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    if 'build' in base:
 | 
	
		
			
				|  |  | -        if isinstance(base['build'], six.string_types):
 | 
	
		
			
				|  |  | -            build['context'] = base['build']
 | 
	
		
			
				|  |  | -        else:
 | 
	
		
			
				|  |  | -            build.update(base['build'])
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    if 'build' in override:
 | 
	
		
			
				|  |  | -        if isinstance(override['build'], six.string_types):
 | 
	
		
			
				|  |  | -            build['context'] = override['build']
 | 
	
		
			
				|  |  | -        else:
 | 
	
		
			
				|  |  | -            build.update(override['build'])
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    if build:
 | 
	
		
			
				|  |  | -        output['build'] = build
 | 
	
		
			
				|  |  | +    def to_dict(service):
 | 
	
		
			
				|  |  | +        build_config = service.get('build', {})
 | 
	
		
			
				|  |  | +        if isinstance(build_config, six.string_types):
 | 
	
		
			
				|  |  | +            return {'context': build_config}
 | 
	
		
			
				|  |  | +        return build_config
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    md = MergeDict(to_dict(base), to_dict(override))
 | 
	
		
			
				|  |  | +    md.merge_scalar('context')
 | 
	
		
			
				|  |  | +    md.merge_scalar('dockerfile')
 | 
	
		
			
				|  |  | +    md.merge_mapping('args', parse_build_arguments)
 | 
	
		
			
				|  |  | +    return dict(md)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  def legacy_v1_merge_image_or_build(output, base, override):
 |