Docker conatiner:在tomcat spring mvc应用程序中获取传递的环境variables

我正在尝试在Tomcat8的顶层Docker容器中部署一个SpringMVC应用程序。

我的问题是这个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 conatiner并尝试部署应用程序,但它不起作用并抛出应用程序特定错误用户名为空且密码为空。

System.getProperty不能接收传递的environment varaibles

重要提示:请注意我不能更改代码,我只能修改docker相关的东西。

我认为应该有一种方法来将传递的环境variables转换为Java属性(为了使System.getProperties工作)

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

 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目录的主机目录。

然后我传递一个环境variablesJAVA_OPTS ,它将设置我将在我的Java代码中使用System.getProperty("db.username")读取的Java属性