【发布时间】:2016-08-01 16:45:59
【问题描述】:
我在 docker 容器中运行 postgresql。我的系统分为两部分,一次性设置和运行时。运行一次性设置时,我让用户输入用户名、密码和 dbname,并使用这些名称创建一个超级用户和数据库:
docker run -e USERNAME=user -e PASSWORD=admin -e DBNAME=test myImage
这是来自 docker 文件 dockerfile 的 sn-p:
RUN /etc/init.d/postgresql start && psql --command "CREATE USER $USERNAME WITH SUPERUSER PASSWORD '$PASSWORD';" && createdb -O $USERNAME $DBNAME
我已经使用恒定的用户名、密码和数据库名称对这一切进行了测试,但是当我尝试传递环境变量时,我似乎无法让它工作。我想我之前读过一篇文章,其中指出 dockerfile 不会扩展环境变量,但我也听说过一些相互矛盾的信息,即环境变量是目前在 docker 中传递这些信息的最佳方式。
如何使上述 sn-p 工作?我只是使用不正确的语法让 docker 评估环境变量。
我还尝试检查正在运行的容器以确认环境变量设置正确(它们是正确的)。
【问题讨论】:
标签: postgresql docker environment-variables