2015-07-30 5 views
2

У меня есть файл Docker на основе справочника весны о docker. В моем приложении используются некоторые частные данные, поэтому я хочу передать эти параметры через переменные среды. Когда я бегу Docker контейнер:Как установить переменные среды через env-файл

docker run -p 8080:8080 -t myname/myapplication --env-file=~/env.list 

представляется, что переменные не установлены, и приложение не может их видеть, что я делаю не так? Как передать эти параметры?

env.list:

ACCOUNT_ID=my_account_id 
ACCOUNT_PASSWORD=my_secret_password 

Мои ENTRYPOINT:

ENTRYPOINT java -Djava.security.egd=file:/dev/./urandom -jar $APPLICATION_NAME 

ответ

5

Я думаю

docker run

принимает все параметры перед изображением и командой. Если я

docker run -t --env-file=env.list ubuntu sh -c "while true; do echo world; sleep 100 ;done"

, а затем

docker exec -it container_id env

я

HOSTNAME=195f18677a91 TERM=xterm ACCOUNT_ID=my_account_id ACCOUNT_PASSWORD=my_secret_password HOME=/root

Попробуйте

docker run -p 8080:8080 --env-file=~/env.list -t myname/myapplication

+0

Спасибо, он работает – zaratustra

1

Это работает очень хорошо:

cat <<EOF > test.env 
MYVAR=test 
EOF 
docker run -it --env-file test.env busybox env | grep MYVAR 

Выведется, как и ожидалось:

MYVAR=test 

В вашем случае в приложении Java вы можете получить доступ к переменным среды через System.getenv().

+0

Пожалуйста, взгляните на мой вопрос, я обновил его и предоставил пример приложения, представляющего проблему. – zaratustra

+0

анализатор для 'docker run' должен быть улучшен – user2915097

Смежные вопросы