Docker + Tomcat + .properties - 环境变量

时间:2015-11-07 13:35:05

标签: java tomcat netbeans web environment

我需要部署一个tomcat服务器,在

中设置MySQL数据库URL

/META-INF/config.properties

进入docker文件。我们部署这些容器的方式,IP无法硬编码到程序中。

有没有办法从这个文件中的系统中提取环境变量?我想做这样的事情:

mdms.db.url=jdbc:mysql://**${MYSQL_HOST}**/db_mdms?useEncoding=true&characterEncoding=UTF-8&autoReconnect=true mdms.db.username=root mdms.db.password=thesecretsauce

我一直在网上搜索,发现我应该可以设置某种

-DMYSQL_HOST=$MYSQL_HOST

启动应用程序但启动带有该标志的tomcat并没有做到这一点,我也无法让它运行起来。

我尝试过的另一件事是:

<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations" value="/WEB-INF/config.properties"/> <property name="ignoreResourceNotFound" value="true" /> <property name="searchSystemEnvironment" value="true" /> <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" /> </bean>

虽然这似乎也不起作用:(

我也试过两个人。

我正在使用Netbeans中的Xubuntu Linux编程(尽管如果必要的话,已经找到了如何在没有netbeans的情况下部署tomcat)

我不是申请作者;我也不是非常流利的Tomcat / Java网络应用程序。然而,这需要完成并且存在语言障碍(或拒绝,我还没有想到这一点)阻止我让作者为我解决这个问题。

感谢您的帮助! -Paul

1 个答案:

答案 0 :(得分:10)

我设法解决此问题的方法是在DockerFile中设置CATALINA_OPTS:

ENV CATALINA_OPTS="-Dkey=value"

例如,我的应用程序的整个DockerFile看起来像这样:

FROM tomcat:8.0-jre8
ENV spring.profiles.active=dev 
ENV CATALINA_OPTS="-Dkey=value"
ADD myWar.war /usr/local/tomcat/webapps/
CMD ["catalina.sh", "run"]