如何通过 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
我有一个基于 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