Quando trabalhamos com aplicações desenvolvidas com o Framework Spring Boot é normal utilizarmos os ‘profiles‘ para definir o ambiente que estamos trabalhando, os profiles são muito utilizados para carregar os resources utilizados na aplicação, permitindo uma variedade de ambientes, como testes, desenvolvimento, produção, etc.
O Spring Boot permite que implementemos uma solução já com um servidor de aplicação embutido, mas também nos permite gerar um .war e subirmos em nosso próprio servidor de aplicação, quando temos um jar, para executarmos a aplicação com um profile especifico, basta inserirmos os argumentos na execução, exemplo:
java -Dspring.profiles.active=prod -jar MyApp.jar
Mas como fazemos isso em um servidor de aplicação? aonde normalmente só realizamos o deploy do .war?. Quando temos esse tipo de ambiente temos que configurar o nosso servidor de aplicação para que ele possua esses argumentos, assim, as devidas váriaveis estaram definidas na VM e a solução terá acesso a elas.
A solução é simples, no caso do Tomcat quem se responsabiliza em gerenciar sua execução é um arquivo chamado catalina.sh armazenado na pasta /bin, todas as configurações do servidor de aplicação devem ser configurados nesse arquivo. Para adicionarmos um VM’args no caso o `spring.profiles.active` vamos editar esse arquivo e adicionar na variável CATALINA_OPTS seu valor.
Segue a alteração que deve ser feita no catalina.sh:
CATALINA_OPTS="-Dspring.profiles.active=prod" # CATALINA_OPTS (Optional) Java runtime options used when the "start", # "run" or "debug" command is executed. # Include here and not in JAVA_OPTS all options, that should # only be used by Tomcat itself, not by the stop process, # the version command etc. # Examples are heap size, GC logging, JMX ports etc.