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

Docker + Tomcat + .properties -- Environment Variables

我需要在

中部署 tomcat 服务器设置 MySQL 数据库 url

/META-INF/config.属性

到 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"]