Назад | Перейти на главную страницу

uWSG Я не могу загрузить конфигурацию в Docker

У меня странная проблема, которая, вероятно, связана с моим Dockerfile, но я ее не вижу - я пробовал разные настройки, но ничего не помогает. Вот мой uwsgi.ini файл:

[uwsgi]
strict = true

socket = 0.0.0.0:8000
protocol = http

module = my_django_project.wsgi
env = DJANGO_SETTINGS_MODULE=my_django_project.settings

master = true
enable-threads = true
vacuum = true
single-interpreter = true
die-on-term = true
need-app = true

harakiri = 60

max-requests = 1000
max-worker-lifetime = 3600
reload-on-rss = 2048
worker-reload-mercy = 60

cheaper-algo = busyness
processes = 128
cheaper = 8
cheaper-initial = 16
cheaper-overload = 1
cheaper-step = 16

cheaper-busyness-multiplier = 30
cheaper-busyness-min = 20
cheaper-busyness-max = 70
cheaper-busyness-backlog-alert = 16
cheaper-busyness-backlog-step = 2

static-map = /static=/static
route = ^/healthz/?$ donotlog:
route = ^/metrics/?$ donotlog:

# spooler setup
spooler = ./spooler
spooler-processes = 2
spooler-frequency = 10

Когда я установлю все модули на свою виртуальную машину (CentOS) в виртуальной среде python и запущу uwsgi --ini uwsgi.ini, все работает нормально, и я вижу следующее сообщение в выводе консоли:

*** dumping internal routing table ***
[rule: 0] subject: path_info regexp: ^/healthz/?$ action: donotlog:
[rule: 1] subject: path_info regexp: ^/metrics/?$ action: donotlog:
*** end of the internal routing table ***

Теперь, если я буду работать точно так же в Docker, я получу следующую ошибку:

web_1_c2d4cafeeae0 | [uWSGI] getting INI configuration from uwsgi.ini
web_1_c2d4cafeeae0 | [strict-mode] unknown config directive: route

Вот мой Dockerfile:

FROM python:3.7.5-alpine3.10

RUN set -ex && \
    apk update && \
    apk add postgresql-dev \
            gcc \
            make \
            python3-dev \
            musl-dev \
            linux-headers \
            libffi-dev \
            libxslt-dev \
            python-dev \
            libxml2 \
            libxml2-dev \
            py3-lxml && \
    pip install --upgrade pip && \
    mkdir /sources

COPY . /sources
WORKDIR /sources

RUN pip install uwsgi==2.0.18 && pip install -e . && python manage.py collectstatic --noinput

EXPOSE 8000

CMD ["uwsgi", "--ini", "uwsgi.ini"]

Я пробовал разные базовые образы, разные версии uwsgi (у меня то же самое в виртуальном env, так что этого быть не должно).

Приложение работает отлично, если я удалю два route директивы, но они мне нужны, так как они загрязняют мои журналы.

Почему uwsgi не работает должным образом в Docker?