是否可以使用环境变量覆盖uwsgi ini文件

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

我正在尝试构建一个“基础”docker 映像,用于使用 uwsgi 运行 python 框架。目标是让其他人构建自己的 docker 镜像,在其中转储应用程序逻辑和所需的任何配置覆盖。

我认为能够通过提供在启动时传递给 uwsgi 的

UWSGI_*
环境变量来覆盖 uwsgi.ini 文件中的任何默认设置可能会很好。

我已经尝试过这种方法,并且如果它根本不在 ini 文件中(例如

UWSGI_WORKERS=4
),则可以通过 env var 设置值。但是如果我在 ini 文件中添加
workers=1
行,它似乎会覆盖环境变量。

这是预期的行为吗?我在文档中找不到有关配置解析顺序的任何内容。 我必须诉诸这样的事情吗?使用环境变量看起来干净多了。

if-exists = ./override.ini
include = %(_)
endif =
python uwsgi
2个回答
4
投票

首先,让.ini文件中的所有环境变量引用如下环境变量:

[uwsgi]
http = $(HTTP_PORT)
processes = $(UWSGI_WORKERS)
threads = $(UWSGI_THREADS)
...

然后在 Dockerfile 中为这些环境变量设置所需的默认值。

现在,任何使用您的基础映像的人都可以通过设置特定的环境变量来覆盖任何配置。


0
投票

我不知道有什么方法可以告诉uWSGI优先考虑环境变量而不是配置文件。如果您没有很多要覆盖的值,一个相对紧凑的解决方法是:

workers = 1
if-env = UWSGI_WORKERS
workers = %(_)
endif =
© www.soinside.com 2019 - 2024. All rights reserved.