Запуск команды collectstatic из Dockerfile

#django #docker #collectstatic

#django #docker #collectstatic

Вопрос:

Моя цель — запустить collectstatic команду внутри Dockerfile , но при попытке перестроить и запустить контейнер, выполнив

 docker-compose up -d --build
  

Я сталкиваюсь с KeyError сообщениями, поступающими из settings.py файла в строках, где используются переменные среды, например:

 os.environ['CELERY_BROKER']
  

По-видимому, это связано с тем, что контейнер еще не собран, поэтому Docker ничего не знает о переменных среды, определенных в моем .env файле. Есть ли какая-либо команда для импорта всех переменных в Docker?
Или, может быть, это плохая идея запускать collectstatic команду внутри Dockerfile, и ее следует запускать внутри файла docker-compose ? Или, может быть, как часть задачи CI / CD?

Мой Dockerfile выглядит следующим образом:

 COPY . /app/
WORKDIR /app
RUN python manage.py collectstatic --noinput
RUN ls -la
  

Ответ №1:

Вероятно, вы не хотите устанавливать переменные среды .env во время сборки, поскольку они запекаются в образ контейнера, поэтому доступны всем, у кого есть доступ к этому образу. IMO, способ справиться с этим — изменить экземпляры os.environ['CELERY_BROKER'] в вашем settings.py with os.environ.get("CELERY_BROKER", "...") , где второй аргумент является разумным значением по умолчанию для вашей среды разработки.

Комментарии:

1. Ну, практически это решило мою проблему. Итак, я принимаю ваш ответ, хотя это немного неправильное решение