在烧瓶应用程序中设置和检索环境变量

pka*_*mol 12 python environment-variables flask docker

我想使用 python3/flask 构建一个非常简单的 REST api。

举例来说,我想将我的SECRET_KEYrequired by设置flask为 env var。

推荐的方法是什么?

我知道python-dotenv允许(或者我应该说需要?).flaskenv带有 env vars的文件以以下形式设置为键值对的包

SECRET_KEY="my_secret_key"
DB_NAME="mydatabase"
Run Code Online (Sandbox Code Playgroud)

等等。

然后(我假设)我可以创建一个settings.py文件,例如

import os
SECRET_KEY = os.getenv('SECRET_KEY`)
Run Code Online (Sandbox Code Playgroud)

然后import settings对我的烧瓶文件等执行。

我的主要问题是如何在容器化环境中进行调整,其中不会有这样的.flaskenv文件,但相应的变量将作为容器本身中的运行时环境变量可用(例如通过其编排器)

上面的形式settings.py是否能够在没有 的情况下检索环境变量.flaskenv

Ada*_*old 15

python-dotenv实际上与 Flask 无关。用于将您的.env文件转换为实际的 env 变量。因此,如果您要在没有它的情况下使用实际的 env 变量,您os.getenv应该仍然可以工作。

旁注:您还可以使用os.environ

os.environ.get("SECRET")
Run Code Online (Sandbox Code Playgroud)


Gab*_* H. 6

在解释器中设置环境变量:

export SECRET_KEY=123
Run Code Online (Sandbox Code Playgroud)

调用变量environ.get()

from os import environ
from flask import Flask

app = Flask(__name__)

app.config['SECRET_KEY'] = environ.get('SECRET_KEY')
Run Code Online (Sandbox Code Playgroud)

核实:

@app.route('/verify')
def verify():
    return '<p>' + app.config['SECRET_KEY'] + '</p>'
Run Code Online (Sandbox Code Playgroud)