Как использовать команду экспорта для установки переменной окружения с помощью docker exec? - PullRequest
0 голосов
/ 31 октября 2019

У меня есть работающий докер-контейнер, использующий предка my_base_image. Теперь, когда контейнер работает, могу ли я установить переменную окружения с помощью команды экспорта с docker exec? если да, то как?

Я попытался использовать следующее, но не работает

docker exec -i -t $(docker ps -q --filter ancestor=`my_base_image`) bash -c "export my_env_var=hey"

В основном я хочу установить my_env_var = hey в качестве переменной env внутри контейнера Docker. Я знаю, что это можно сделать разными способами, используя .env_file или env key docker-compose & ENV в Dockerfile. Но я просто хочу знать, возможно ли это с помощью команды docker exec

1 Ответ

3 голосов
/ 31 октября 2019

Это невозможно. Процесс никогда не может изменить среду любого другого процесса, кроме самого себя, за исключением того, что он может указать начальную среду процессов, которые он запускает сам. В этом случае ваша docker exec оболочка не запускает основной контейнерный процесс, поэтому она не может изменять переменные среды этого процесса.

Это одно из нескольких изменений, которые вам необходимо остановить,удалить и заново создать контейнер для. Вы должны относиться к этому как к чрезвычайно регулярному обслуживанию контейнера и планировать в конечном итоге удалить контейнер. Это означает, например, что любые данные, которые необходимо сохранить вне контейнера, в идеале, во внешней базе данных, но, возможно, во смонтированном томе.

...