Tomcat

Docker容器:在tomcat spring mvc應用程序中獲取傳遞的環境變數

  • April 30, 2019

我正在嘗試在 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")

引用自:https://serverfault.com/questions/880019