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

标签 java tomcat netbeans web environment

我需要在

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

/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 网络应用程序也不是很流利。然而,这需要完成并且存在语言障碍(或拒绝,我还没有弄清楚)阻止我让作者为我解决这个问题。

最佳答案

我设法解决这个问题的方法是在 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"]

关于java - Docker + Tomcat + .properties -- 环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33583330/

相关文章:

java - Hibernate 查询语法异常 : Not Mapped

java - 在 netbeans 中正确打包可运行的 Jar 项目

java - 我正在尝试使用 Firebase 为 Java 桌面应用程序构建后端

java - 如何调试 Tomcat 中的领域功能?

java - GWT RPC 在客户端使用另一个项目中的类

java - 为什么类型转换会发生这种情况?

java - 类属性未设置!在 weka.core.Capability.test(来源未知)

java - SQL更新查询-尝试更新sql记录

java - 如何解决我的 JavaFX TableView 中的这个视觉故障?

Tomcat在同一台机器上不是按IP响应而是在网络中响应