如何通过 env-file 设置环境变量

How to set environment variables via env-file

我有一个基于 spring 关于 docker 指南的 Dockerfile。我的应用程序使用了一些私有数据,所以我想通过环境变量传递这些参数。当我 运行 一个 docker 容器时:

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

这个效果很好:

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

将按预期打印:

MYVAR=test

在您的 Java 应用程序中,您可以通过 System.getenv().

访问环境变量

我觉得

 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