The -v switch works fine. What doesn't work is to map to a local directory i.e.
-v $ARITFACTORY_HOME/etc is good, but -v $ARITFACTORY_HOME/etc:$(pwd)
The problem is due to artifactory needing a file that's in /etc to start the first time. The way docker works is if you give the first -v option above the files that are on the image originally are placed in the volume. The second case does not do this so you end up with artifactory not having access to its files.
A workaround would be doing something like:
docker run --name temp <artifactory image> /bin/false
docker cp temp:/etc/opt/jfrog/artifactory .
docker run ... with all the -v options ...