Add a Dockerfile to the context. If it is a :class:`DockerFile` instance, files and archive contents added there
        will automatically be copied to the tarball. The :class:`DockerFile` will be finalized.

        :param dockerfile: :class:`DockerFile` instance or file path to a Dockerfile.
        :type dockerfile: DockerFile | unicode | str

def add_dockerfile(self, dockerfile):
        """
        Add a Dockerfile to the context. If it is a :class:`DockerFile` instance, files and archive contents added there
        will automatically be copied to the tarball. The :class:`DockerFile` will be finalized.

        :param dockerfile: :class:`DockerFile` instance or file path to a Dockerfile.
        :type dockerfile: DockerFile | unicode | str
        """
        if isinstance(dockerfile, DockerFile):
            dockerfile.finalize()
            dockerfile_obj = dockerfile.fileobj
            for path, arcname in dockerfile._files:
                self.add(path, arcname=arcname)
            for archive in dockerfile._archives:
                self.addarchive(archive)
            tarinfo = tarfile.TarInfo('Dockerfile')
            tarinfo.size = dockerfile_obj.tell()
            dockerfile_obj.seek(0)
            self.tarfile.addfile(tarinfo, dockerfile_obj)
        else:
            self.add(dockerfile, arcname='Dockerfile')