أحاول نشر تطبيق SpringMVC داخل حاوية Docker في الأعلى إلى tomcat8.

مشكلتي هي أن تطبيق 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

يبدأ برنامج القط المتصل ويحاول نشر التطبيق ، لكنه لا يعمل ويرمي أخطاء التطبيق المحددة اسم المستخدم فارغ وكلمة المرور فارغة.

System.getPropertyغير قادر على استلام الجواز environment varaibles.

هام: يرجى ملاحظة أنه لا يمكنني تغيير الرمز ، ولا يمكنني سوى تعديل الأشياء المتعلقة بعمال الإرساء.

أعتقد أنه يجب أن تكون هناك طريقة لتحويل متغيرات البيئة التي تم تمريرها إلى خاصية Java (لكي يعمل System.getProperties)

answer

لقد قمت بحل مشكلتي باستخدام الأمر التالي ، لكنني ما زلت أنتظر إجابة أفضل لقبولها.

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")