[#8028] use virtualenv in docker, and more:

* use a helper script to run commands after shared volumes are all up and running
* move npm stuff into helper script, so web's command is not overriden and has no extra delay at that point
* refactor a 'base' container in docker-compose.yml to share the environment & volume settings
4 files changed