Tomcat
Docker容器:在tomcat spring mvc應用程序中獲取傳遞的環境變數
我正在嘗試在 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 容器並嘗試部署應用程序,但它不起作用並拋出應用程序特定錯誤使用者名為空,密碼為空。
System.getProperty
是無法接收傳遞的environment varaibles
。**重要提示:**請注意我不能更改程式碼,我只能修改 docker 相關的東西。
我認為應該有一種方法可以將傳遞的環境變數轉換為 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 目錄上。
然後我傳遞一個環境變數
JAVA_OPTS
,它將設置我將在我的 Java 程式碼中讀取的 Java 屬性System.getProperty("db.username")