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

时间:2015-07-30 13:39:34

标签: java docker environment-variables dockerfile

我有一个基于弹簧指南的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

2 个答案:

答案 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()访问环境变量。