Docker+Tomcat+.properties——环境变量



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

最新更新