Как передать свойство System в контейнеры докеров?

Итак, я знаю, что вы можете передавать переменные окружения в Docker-контейнер, используя -e, например:

docker run -it -e "var=var1" myDockerImage

Но мне нужно передать системное свойство в контейнер докера, потому что так я запускаю свой JAR файл:

java -Denvironment=dev -jar myjar.jar 

Итак, как я могу передать системное свойство -D в Docker? Как:

docker run -it {INSERT Denvironment here} myDockerImage

Ответ 1

Используйте переменную, которую вы передали в контейнер в команде java:

docker run -it -e "ENV=dev" myDockerImage
java -Denvironment=$ENV -jar myjar.jar

Ответ 2

Можно также использовать следующий start.sh ENTRYPOINT для контейнера Docker, не забудьте использовать синтаксис массива, например:

Dockerfile:

...
ENTRYPOINT ["/start.sh"]

Фактический start.sh script:

#!/bin/bash
export JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64"
exec $JAVA_HOME/bin/java -jar myjar.jar [email protected]

Затем вы можете просто передать свойства системы Java непосредственно в приложение как аргументы контейнера запуска docker:

docker run myDockerImage "-Dvar=var1"