Normally, the best practice, IMHO, is to externalize those .properties files (at least the ones that will be changed per "customer") from the webapp. This is because we don't want a custom webapp build for each "customer" (production, demo, development, customer A, customer X, ...). You only want one version of your webapp and multiple versions of your config files (one per each "customer").
You can configure your own custom config folder. That folder will be just one more place were the classloader will lookup for resources:
In tomcat_dir\conf\catalina.properties, you can set the common.loader property like this:
common.loader=your_config_folder_path,${catalina.base}/lib,${catalina.base}/lib/.jar,${catalina.home}/lib,${catalina.home}/lib/.jar
So, if you now need to setup an environment for a demo, you just need to put in that config folder your demo version of configApp.properties.
If you want to have multiple environments running on the same machine, you can configure multiple instances of tomcat. Basicaly you just need to install tomcat once, and then, for each instance, you need to have different webapps, conf, logs, temp, work folders. You can do this creating a .bat|.sh script for each instance. In that script you only have to specify the CATALINA_HOME environment variable, which can point to a relative path of the parent folder (to be more generic).
You can google for "running multiple instances of tomcat" or check the following tutorial for more details:
http://www.ramkitech.com/2011/07/running-multiple-tomcat-instances-on.html
I would sugest you to configure the common.loader property (in catalina.properties) to point to ${catalina.base}/conf folder:
common.loader=${catalina.base}/conf,${catalina.base}/lib,${catalina.base}/lib/.jar,${catalina.home}/lib,${catalina.home}/lib/.jar
So, if you need to have a demo and a production environment running on the same machine, you must have something like this:
tomcat_production
|__ webapps
|__ conf
| |__ configApp.properties (production settings)
| |__ catalina.properties
| |__ (...)
|__ logs
|__ temp
|__ work
|__ startup.bat (script that will start this instance of tomcat)
tomcat_demo
|__ webapps
|__ conf
| |__ configApp.properties (demo settings)
| |__ catalina.properties
| |__ (...)
|__ logs
|__ temp
|__ work
|__ startup.bat (script that will start this instance of tomcat)
I hope this helps...