Передача переменных среды с Docker в приложение Spring Boot не работает - PullRequest
0 голосов
/ 26 апреля 2018

Я пытаюсь передать переменные среды в приложение Spring Boot, но оно, похоже, не работает.

Команда запуска Docker:

docker run my-image -e TEST_VAR='testing'

Spring Boot main ():

@SpringBootApplication
public class MyApplication {

    public static void main(String[] args) {
        ApplicationContext ctx = SpringApplication.run(MyApplication.class, args);

        //Read environmental variables:
        Map<String, String> env = System.getenv();
        System.out.println("TEST_VAR: "+env.get("TEST_VAR"));


    }
}

Вывод:

TEST_VAR: null

Как успешно передать переменные окружения с помощью Docker?

Ответы [ 2 ]

0 голосов
/ 26 апреля 2018

Порядок опций важен в командной строке докера.Есть флаги, которые вы можете передать перед командой run, флаги, которые вы можете передать команде run, и args, которые передаются в образ как ваша команда для запуска.В вашем примере:

docker run my-image -e TEST_VAR='testing'

-e TEST_VAR='testing' передается как новое значение CMD для контейнера, который будет запущен (или аргумент вашей точки входа).

При переупорядоченииКоманда, вы скажете run передать переменную окружения в контейнер по желанию:

docker run -e TEST_VAR='testing' my-image
0 голосов
/ 26 апреля 2018

docker run упоминает

Кроме того, оператор может установить любую переменную среды в контейнере, используя один или несколько флагов -e, даже переопределяя упомянутые выше,или уже определено разработчиком с помощью Dockerfile ENV.

Если оператор называет переменную среды без указания значения, то текущее значение именованной переменной распространяется в среду контейнера:

Но пример:

docker run -e "deep=purple" -e today --rm alpine env

Так что проверьте свои кавычки и порядок параметров (как соблюдает BMitch , любой параметр выполненный после имя изображения будет передано как CMD вашей команде изображения ENTRYPOINT, что не то, что вы хотите):

docker run -e "TEST_VAR=testing" my-image 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...