Docker 烧瓶应用程序环境变量

Posted

技术标签:

【中文标题】Docker 烧瓶应用程序环境变量【英文标题】:Docker flask application environment variables 【发布时间】:2016-03-09 22:29:36 【问题描述】:

我正在通过以下方式启动一个 docker 容器:

docker run -e IP_AD=192.168.99.100 -p 80:80 flask_app

我只是试图将 IP 地址传递给烧瓶应用程序,以便可以从我的应用程序加载某些内容。这个资源会随着环境的变化而变化,所以这就是我想将它作为环境变量传递的原因。

稍后,我想使用这个变量,但要从正在运行的烧瓶应用程序的上下文中使用。如何从我的烧瓶应用程序中加载 IP_AD 并将其用作 python 变量?

我试过这样做:

import os
os.environ.get('IP_AD')

但它似乎没有加载任何东西。加载从 docker run -e 传递的 IP_AD 的正确方法是什么

【问题讨论】:

-e 是正确的,例如 docker run --rm -e ENV=1 python python -c 'import os; print(os.environ["ENV"])' 您的建议有效。我的问题是我没有将我的 IP 地址作为字符串传递。谢谢 【参考方案1】:

像这样创建文件 .env

model_path=./model/data_fs.csv

然后通过执行安装库.env

pip3 install python-dotenv==0.17.1

将此添加到您的代码中以加载所有 .env 变量

from dotenv import load_dotenv
load_dotenv()

所以你可以访问它

if os.getenv("model_path", None) is not None:
    return os.getenv("model_path", None)
# otherwise raise an exception
raise Exception("no .env file found")

【讨论】:

【参考方案2】:

你可以这样试试

import os
os.environ["IP_AD"]

【讨论】:

这个答案复制了第一条评论。

以上是关于Docker 烧瓶应用程序环境变量的主要内容,如果未能解决你的问题,请参考以下文章

docker中,jdk用镜像 怎么配置环境变量

Flask:通过 OS 环境变量覆盖 config.py 文件的环境变量

Docker 主机的 Elastic Beanstalk 环境变量

Docker 主机的 Elastic Beanstalk 环境变量

怎样获取docker容器的环境变量

使用 nginx 将环境变量从 docker-compose 传递到 vue 应用程序