我正在尝试在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属性