Назад | Перейти на главную страницу

Контейнер Docker: получить переданную переменную среды в приложении Tomcat Spring MVC

Я пытаюсь развернуть приложение 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")