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"]
我需要在
中部署 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"]