For my Play 2.2/Scala application (built with SBT), I would like to deploy different configuration files depending on the environment I'm deploying to (e.g. to couple a deployment with a particular database server). How does one create different variants of the application's configuration file (conf/application.conf) for different deployment targets? Hopefully variants can be generated from a base version?
What I'm used to from .NET is to have a base configuration file (Web.config), which undergoes a certain transformation depending on the profile one is deploying (e.g. Production). Does one use a similar technique in the Play/Scala world?
Alternative configuration files are covered in Play's documentation quite well in section Specifying alternative configuration file
.
In short - in application.conf
you place default configuration of your app, and additionally you need to create additional files for you environment(s) ie. life.conf
, dev.conf
etc. In these files you first need to include application.conf
(which will read whole default configuration) and next just overwrite only parts which have to be changed - ie. DB credentials, it could be dev.conf
:
include "application.conf"
db.default.driver=org.h2.Driver
db.default.url="jdbc:h2:mem:alternative-database-for-dev-testing"
db.default.user=developer
db.default.password="developerpass"
So finally you start your application (after dist
) as
./start -Dconfig.resource=dev.conf
or with the Play console
play -Dconfig.resource=dev.conf run
Several tips:
application.conf
file, if some dev will forget to include his dev.conf
he won't damage the production DB, instead you should put it in prod.conf
.dev_aknuds1.conf
, dev_biesior.conf
etc, so you can ignore them with one pattern dev_*.conf
in repo.start_dev.sh
, run_dev.sh
etc. so you won't need to write -Dconfig.resource=...
each timeIf you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With