Я пытаюсь развернуть приложение 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
Он запускает tomcat conatiner и пытается развернуть приложение, но он не работает и выдает ошибки приложения, имя пользователя пусто, а пароль пуст.
System.getProperty
не может получить сданный environment varaibles
.
Важный: Обратите внимание, я не могу изменить код, я могу изменять только вещи, связанные с докером.
Я думаю, что должен быть способ преобразовать переданные переменные среды в свойство 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 контейнера.
Затем я передаю переменную среды JAVA_OPTS
который установит свойства Java, которые я буду читать в своем Java-коде, используя System.getProperty("db.username")