我需要部署一个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
答案 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"]