如何通过env-file设置环境variables

我有一个基于Docker的spring指南的Dockerfile。 我的应用程序消耗一些私人数据,所以我想通过这些参数通过环境variables。 当我运行docker集装箱时:

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

看起来variables没有设置,应用程序看不到它们,我做错了什么? 如何传递这些参数?

env.list:

 ACCOUNT_ID=my_account_id ACCOUNT_PASSWORD=my_secret_password 

我的ENTRYPOINT

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

我认为

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

这很好:

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

这将按预期打印:

 MYVAR=test 

在你的Java应用程序中,你可以通过System.getenv()访问环境variables。