Docker conatiner:在tomcat spring mvc应用程序中传递环境变量

Docker conatiner:在tomcat spring mvc应用程序中传递环境变量

我正在尝试将 Docker 容器内的 SpringMVC 应用程序部署到 tomcat8 之上。

我的问题是这个 SpringMVC 应用程序使用以下代码接收参数

String username = System.getProperty("db.username");
String password = System.getProperty("db.password");

我正在使用以下命令运行 Docker 容器

docker run -e "db.username=root" -e "db.password=123" -v /home/ubuntu/code:/usr/local/tomcat/webapps -i -t -p 80:8080 tomcat

它启动 tomcat 容器并尝试部署应用程序,但它不起作用并抛出应用程序特定的错误用户名为空且密码为空。

System.getProperty无法接收已传递的environment varaibles

重要的:请注意,我无法更改代码,我只能修改与docker相关的东西。

我认为应该有一种方法将传递的环境变量转换为 Java 属性(为了让 System.getProperties 正常工作)

答案1

我使用以下命令解决了我的问题,但我仍然会等待更好的答案来接受。

docker run -v /home/ubuntu/code:/usr/local/tomcat/webapps -e JAVA_OPTS="-Ddb.username=root -Ddb.password=abc123" -it -p 80:8080 tomcat

在上面的命令中,我尝试运行一个 tomcat 容器,我已将主机目录挂载到容器的 tomcat webapps 目录中。

然后我传递一个环境变量JAVA_OPTS,该变量将设置 Java 属性,我将使用 Java 代码读取这些属性System.getProperty("db.username")

相关内容