如何获得dockerfile来评估我发送给它的环境variables?

我在Docker容器中运行postgresql。 我的系统分为两部分,一次设置和一个运行时。 运行一次性设置时,我让用户input用户名,密码和dbname,然后用这些名称创build一个超级用户和数据库:

docker run -e USERNAME=user -e PASSWORD=admin -e DBNAME=test myImage 

以下是docker文件dockerfile的一个片段:

 RUN /etc/init.d/postgresql start && psql --command "CREATE USER $USERNAME WITH SUPERUSER PASSWORD '$PASSWORD';" && createdb -O $USERNAME $DBNAME 

我已经用恒定的用户名,密码和数据库名称testing了这一切,但是当我尝试传递环境variables时,我似乎无法使其工作。 我想我以前读过一篇文章,声明环境variables不是由dockerfile扩展的,但是我也听到了相冲突的信息,即环境variables是在docker中传递这些信息的最好方法。

我如何获得上面的代码片段? 我只是使用不正确的语法来得到docker评估环境variables。

我也试着检查正在运行的容器,以确认环境variables设置正确(他们是)。

我想你误解了在Dockerfile中运行的是什么; 也许你把它与“docker运行”混为一谈。 看看CMD吧。

注意:Dockerfile的目的是构build一个图像。 容器是一个由“docker run”命令从图像创build的进程。

如果要在创build容器时执行某些命令,可以将其指定为“docker run”的参数,作为Dockerfile中的CMD或任一位置的入口点。