code: def build(client, repository_tag, docker_file, tag=None, use_cache=False):
          
          if not isinstance(client, docker.Client):
              raise TypeError("client needs to be of type docker.Client.")
  
          if not isinstance(docker_file, six.string_types) or not os.path.exists(docker_file):
              # TODO: need to add path stuff for git and http etc.
              raise Exception("docker file path doesn't exist: {0}".format(docker_file))
  
          if not isinstance(repository_tag, six.string_types):
              raise TypeError('repository must be a string')
  
          if not tag:
              tag = 'latest'
  
          if not isinstance(use_cache, bool):
              raise TypeError("use_cache must be a bool. {0} was passed.".format(use_cache))
  
          no_cache = not use_cache
  
          if ':' not in repository_tag:
              repository_tag = "{0}:{1}".format(repository_tag, tag)
          file_obj = None
          try:
              if os.path.isfile(docker_file):
                  path = os.getcwd()
                  docker_file = "./{0}".format(os.path.relpath(docker_file))
  
                  # TODO: support using file_obj in the future. Needed for post pre hooks and the injector.
                  # with open(docker_file) as Dockerfile:
                  #     testing = Dockerfile.read()
                  #     file_obj = BytesIO(testing.encode('utf-8'))
  
                  response = client.build(
                      path=path,
                      nocache=no_cache,
                      # custom_context=True,
                      dockerfile=docker_file,
                      # fileobj=file_obj,
                      tag=repository_tag,
                      rm=True,
                      stream=True
                  )
              else:
                  response = client.build(path=docker_file, tag=repository_tag, rm=True, nocache=no_cache, stream=True)
          except Exception as e:
              raise e
          finally:
              if file_obj:
                  file_obj.close()
  
          parse_stream(response)
          client.close()
  
          return Image(client, repository_tag)
docs: Build a docker image