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 烧瓶应用程序环境变量的主要内容,如果未能解决你的问题,请参考以下文章
Flask:通过 OS 环境变量覆盖 config.py 文件的环境变量
Docker 主机的 Elastic Beanstalk 环境变量