Я создаю некоторые изображения Docker Spark, и я немного озадачен тем, как передавать переменные среды (ENV), определенные в DockerFile, вплоть до контейнера через «run -e», в супервизор, а затем в оболочку spark-submit, без необходимости жестко закодировать их в файле supervisord.conf (как представляется, это предложение в чем-то похожее здесь: supervisord environment variables setting up application).Как я могу определить свои переменные ENV один раз в DockerFile и передать их в свое искровое изображение, которое представлено управляемым сценарием супервизора?
Чтобы объяснить, представьте себе следующие компоненты:
DockerFile (содержит около 20 переменных среды "ENV Foo1 планкой1" и т.д.)
run.sh (докер запуска -d - е my_spark_program)
CONF/supervisord.conf ([программа: my_spark_program] команда = ш /opt/spark/sbin/submit_my_spark_program.sh т.д.)
submit_my_spark_program.sh (содержит искру-подарок из jar, который я хочу запустить - возможно, также нужно что-то вроде --files • --conf 'spark.executor.extraJavaOptions = -Dconfig.resource = app' • - конф «spark.driver.extraJavaOptions = -Dconfig.resource = приложение», но это не совсем, кажется, не так ли?)
Я предполагаю, что я хотел бы определить мою ENV переменных один раз в DockerFile и только один раз, и я думаю, что должно быть возможно передать их в контейнер через run.sh с помощью переключателя «-e», но я не могу понять, как передать их оттуда в супервизор и за его пределами, отправьте shell (submit_my_spark_program.sh), чтобы они были в конечном счете доступны для моего искрового флага е. Это кажется немного переработанным, поэтому, может быть, я чего-то здесь не вижу ...?
Я полагаю, что файл 'submit_my_spark_program.sh' должен быть в состоянии использовать переменную окружения так же, как обычный сценарий оболочки. Вы протестировали его? Разве это не работает? BTW, если 'ENV' определен в Dockerfile, вам не нужно запускать его с помощью' -e', который просто переопределяет переменную. –
Я попытался очистить небольшую версию приложения, которое я должен попробовать, и продублировать проблему, и я могу ее дублировать, поэтому, что бы я ни делал неправильно, я делаю это одинаково неправильно в обоих случаях. Я поставлю образцы кода. Я замечаю также, что когда я вхожу в контейнер с помощью «docker exec -it spark-simple-app bash», я могу видеть переменные среды, которые я хочу использовать в среде (используя «env»), поэтому файл Docker выполняя эту задачу, чтобы получить переменные среды в контейнере, но где-то вдоль линии эти же переменные до сих пор не могут достичь супервизора и/или моего приложения. –