我有一个基于弹簧指南的Dockerfile docker。我的应用程序消耗一些私有数据,所以我想通过环境变量传递这些参数。当我运行一个docker容器时:
<nav id="thumb-services">
<a id="tratamento-imagem" class="menu-item">
<div class="hover-menu">
<p class="menu-p"> Tratamento de Imagem </p>
</div>
</a>
<a id="portfolio" class="menu-item">
<div class="hover-menu">
<p class="menu-p"> Pós Produção </p>
</div>
</a>
<a id="fotografia" class="menu-item">
<div class="hover-menu">
<p class="menu-p"> Fotografia </p>
</div>
</a>
<a id="montagem" class="menu-item">
<div class="hover-menu">
<p class="menu-p"> Portifólio </p>
</div>
</a>
</nav>
<div id="main-info">
<div id="selector"></div>
<div id="panel">
<p id="teste">Hello world!</p>
</div>
</div>
看来变量没有设置而且应用程序看不到它们,我做错了什么?如何传递这些参数?
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
答案 0 :(得分:6)
我认为
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
答案 1 :(得分:1)
这非常有效:
cat <<EOF > test.env
MYVAR=test
EOF
docker run -it --env-file test.env busybox env | grep MYVAR
将按预期打印:
MYVAR=test
在Java应用程序中,您可以通过System.getenv()
访问环境变量。