У меня странная проблема, которая, вероятно, связана с моим 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?