我需要部署一个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>
尽管这似乎也没用。
我还试着把两者结合起来。
我在Xubuntu Linux上运行Netbeans编程(尽管我已经找到了如何在没有Netbeans的情况下部署tomcat(如果必要的话))
我不是申请书的作者;我对Tomcat/Java网络应用程序也不是很流利。尽管如此,这还是需要完成的,而且有一个语言障碍(或拒绝,我还没有弄清楚)阻止了我让作者为我解决这个问题。
我解决这个问题的方法是在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"]