Django Загрузка неправильных настроек модуля в Docker - PullRequest
0 голосов
/ 24 ноября 2018

У меня есть приложение Django, настроенное на использование sqlite в файле базовых настроек, и я перезаписываю настройки в файлах настроек производства и разработки.

Я установил для DJANGO_SETTINGS_MODULE правильное значение в моем файле Dockerfile.

Однако, когда я запускаю его, он использует sqlite, как определено в файле базовых настроек.Если я закомментирую это, он будет жаловаться на то, что database.ENGINE не установлен.

Почему он читает конфигурацию базы данных из файла настроек base.py, а не из другого?Я указываю другой в переменной окружения, и он читает другие настройки оттуда, но для базы данных он читает его из базового файла.

Я несколько смущен этим поведением, если кто-нибудь может дать мне какое-то направление кРешение этой проблемы будет полезно.

Если вам нужна дополнительная информация, дайте мне знать.

Dockerfile:

FROM python:3.6
LABEL maintainer xxx@xx.com

ARG requirements=requirements/production.txt
ENV DJANGO_SETTINGS_MODULE=sasite.settings.production_test

WORKDIR /app

COPY manage.py /app/
COPY requirements/ /app/requirements/ 

RUN pip install -r $requirements

COPY config config
COPY sasite sasite
COPY templates templates
COPY logs logs
COPY scripts scripts

EXPOSE 8001

CMD ["/usr/local/bin/gunicorn", "--config", "config/gunicorn.conf", "--log-config", "config/logging.conf", "-w", "4", "-b", "0.0.0.0:8001", "sasite.wsgi:application"]

1 Ответ

0 голосов
/ 24 ноября 2018

gunicorn может быть демонизирован, и он может не наследовать переменную docker env, как вы ожидаете.К счастью, у gunicorn есть способ указать значение env для его работников с помощью флага -e.Таким образом, вы можете просто добавить следующие два параметра в ваш массив CMD, и он должен работать:

  1. -e
  2. DJANGO_SETTINGS_MODULE=sasite.settings.production_test

CMD ["/usr/local/bin/gunicorn", "--config", "config/gunicorn.conf", "--log-config", "config/logging.conf", "-w", "4", "-b", "0.0.0.0:8001", <b>"-e", "DJANGO_SETTINGS_MODULE=sasite.settings.production_test", </b>"sasite.wsgi:application"]
...