#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. Ну, практически это решило мою проблему. Итак, я принимаю ваш ответ, хотя это немного неправильное решение