Notebook server spawning

I am running an nginx reverse proxy and jupyterhub in docker (ubuntu 18.04) . I am getting this error : Unhandled error starting alvin's server: Incompatible options have been provided for the bind type mount.
The browser throws and error: API request failed (500): error

from my jupyterhub_config.py file:

c.JupyterHub.spawner_class = 'dockerspawner.SwarmSpawner'
network_name = os.environ['DOCKER_NETWORK_NAME']
c.SwarmSpawner.network_name = network_name
c.SwarmSpawner.use_internal_ip = True

## Pass the network name as argument to spawned containers
c.SwarmSpawner.extra_host_config = {'network_mode': network_name}
c.SwarmSpawner.host_ip = '0.0.0.0'
notebook_dir = os.environ.get('NOTEBOOK_DIR') or '/home/joyvan/work'
c.SwarmSpawner.notebook_dir = notebook_dir

## Mount the user's notebook directory in the container
c.SwarmSpawner.volumes = { 'jupyterhub-user-{username}': notebook_dir }

## Remove containers once they are stopped
c.SwarmSpawner.remove_containers = True

## For debugging arguments passed to spawned containers
c.SwarmSpawner.debug = True

from my docker.yml file

services:
  jupyterhubserver:
    image: sgsupdocker/jupyterhub-onbuild:060319.2
    hostname: jupyterhubserver
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /vol_b/exchange:/home/joyvan/work
    networks:
      jupyterhub:
        aliases:
          - jupyterhubserver
    environment:
      DOCKER_NETWORK_NAME: jupyterhub
      NOTEBOOK_DIR: /home/joyvan/work
    deploy:
      replicas: 1
      placement:
        constraints:
          - node.role == manager

from the container logs:

Traceback (most recent call last):
      File "/opt/conda/lib/python3.6/site-packages/tornado/web.py", line 1699, in _execute
        result = await result
      File "/opt/conda/lib/python3.6/site-packages/jupyterhub/apihandlers/users.py", line 414, in post
        await self.spawn_single_user(user, server_name, options=options)
      File "/opt/conda/lib/python3.6/site-packages/jupyterhub/handlers/base.py", line 889, in spawn_single_user
        timedelta(seconds=self.slow_spawn_timeout), finish_spawn_future
      File "/opt/conda/lib/python3.6/site-packages/jupyterhub/handlers/base.py", line 807, in finish_user_spawn
        await spawn_future
      File "/opt/conda/lib/python3.6/site-packages/jupyterhub/user.py", line 642, in spawn
        raise e
      File "/opt/conda/lib/python3.6/site-packages/jupyterhub/user.py", line 546, in spawn
        url = await gen.with_timeout(timedelta(seconds=spawner.start_timeout), f)
      File "/opt/conda/lib/python3.6/site-packages/dockerspawner/dockerspawner.py", line 983, in start
        obj = yield self.create_object()
      File "/opt/conda/lib/python3.6/site-packages/dockerspawner/swarmspawner.py", line 180, in create_object
        mounts=self.mounts,
      File "/opt/conda/lib/python3.6/site-packages/dockerspawner/swarmspawner.py", line 117, in mounts
        for host_loc, vol in self.volume_binds.items()
      File "/opt/conda/lib/python3.6/site-packages/dockerspawner/swarmspawner.py", line 117, in <listcomp>
        for host_loc, vol in self.volume_binds.items()
      File "/opt/conda/lib/python3.6/site-packages/docker/types/services.py", line 242, in __init__
        'Incompatible options have been provided for the bind '
    docker.errors.InvalidArgument: Incompatible options have been provided for the bind type mount.

I think I have included all the relevant information. Am I getting this error because I am NOT using a named docker volume? The reason I am not using a named docker volume is becuase I keep getting a permissions denied when the permissions for both the destination and the source are set to ugo+rw. Any insights would be greatly appreciated.

cheers,

alvin