Docker Flask 应用环境变量

问题描述 投票:0回答:3

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

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

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

后来,我想在运行的 Flask 应用程序的上下文中使用这个变量。如何从我的 Flask 应用程序加载

IP_AD
并将其用作 python 变量?

我尝试过这样做:

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

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

python ubuntu flask docker environment-variables
3个回答
0
投票

像这样创建文件.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")

0
投票

为此,您需要在命令之前放置

env
变量,以便可以从 Flask 应用程序访问它。

让我举个例子,我这里有示例烧瓶

import os
from flask import Flask, jsonify
app = Flask(__name__)

@app.route("/", methods=["OPTIONS", "GET"])
def home():
    IP_AD = os.environ.get("IP_AD")
    return jsonify({"status": 200, "message": IP_AD})


if __name__ == "__main__":
    app.run()

然后当使用

env
变量运行时,你可以这样做

IP_AD=192.168.99.100 python main.py

那么,当您尝试访问

env
变量时,它将显示如下,例如使用curl

curl --location 'http://localhost:5000'

反应会是这样的

{"message":"192.168.99.100","status":200}

所以在你的情况下会是

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

-2
投票

你可以这样尝试

import os
os.environ["IP_AD"]
© www.soinside.com 2019 - 2024. All rights reserved.