Though, you are aware that volumes suppport whatever parameters the mount command is able to use, aren’t you? A bind volume litterely uses a mount --bind to mount a host folder into a container folder… as such a size limitation wouldn’t make sense. The same applies to nfs/cifs shares: when you mount a remote share int o a container, it is still a file level share → so, no size limitation, unless you know how to configure a quota that limits the size for you.
You will need to use a blockdevice level volume driver, like devicemapper (deprecated, maybee still build-in), portworx (thirdparty) or any other docker volume plugin that allows blockdevice level volumes. Not sure if btrfs or zfs volume allow block device size limitation… might be worth a try.
There is one other way at least on linux if you need local volume and don’t want to create partitions.
1.) Create a virtual disk image
2.) Create a filesystem on that image
3.) Mount that image on the host to /mnt/docker/volumes/database_data
3.) Mount database_data to the container