You can alternatively add the below piece of code in you jupyterhub_config.py file so it can add the new directory for each logged in user asynchronously .
def create_dir_hook(spawner):
volume_path = os.path.join('/home/jupyter-hubadmin', spawned_user)
uid = pwd.getpwnam('jupyter').pw_uid
spawner.port = random_port()
if not os.path.exists(volume_path):
# create a directory with umask 0755
# hub and container user must have the same UID to be writeable
# still readable by other users on the system
os.makedirs(volume_path, 0o755)
#subprocess.Popen ("git init" , shell=True , cwd=volume_path).communicate()
pass
# the user folder should be owner by the user configured in the docker container
# if not, the end user will be not able to create any notebook
os.chown(volume_path, uid, uid)
# attach the hook function to the spawner
c.Spawner.pre_spawn_hook = create_dir_hook