Ek probeer 'n SpringMVC-toepassing binne 'n Docker-houer bo-op na tomcat8 ontplooi.

My probleem is dat hierdie SpringMVC-toepassing parameters ontvang deur die volgende kode te gebruik

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

Ek hardloop Docker-houer met die volgende opdrag

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

Dit begin die tomcat-houer en probeer om die toepassing te ontplooi, maar dit werk nie en gooi toepassingspesifc foute gebruikernaam is leeg en wagwoord is leeg.

System.getPropertyis nie in staat om die geslaagde te ontvang nie environment varaibles.

Belangrik: Neem asseblief kennis dat ek nie die kode kan verander nie, ek kan net die docker-verwante dinge wysig.

Ek dink daar moet 'n manier wees om verbygaande omgewingsveranderlikes in Java-eiendom te transformeer (sodat System.getProperties kan werk)

answer

Ek het my probleem opgelos met die volgende opdrag, maar ek sal steeds wag vir 'n beter antwoord om te aanvaar.

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

In bogenoemde opdrag probeer ek om 'n tomcat-houer te laat loop, ek het die gasheergids op die tomcat-webapps-gids van die houer gemonteer.

Dan gee ek 'n omgewingsveranderlike JAVA_OPTSdeur wat Java-eienskappe sal stel wat ek in my Java-kode sal leesSystem.getProperty("db.username")