Параметр SECRET_KEY не должен быть пустым. Django docker
Я пытался найти решение на stack и других сайтах, но безрезультатно. Я бьюсь с django уже несколько дней.
Я получил свое приложение django dockerized и оно работает нормально. Я использую .env файл для работы с секретными переменными. И тут начинается проблема. Я не могу использовать travis CI или режим отладки в Visual Studio Code, потому что мои переменные env не видны. Когда я пытаюсь запустить travis или отладчик, я получаю ошибку "Параметр SECRET_KEY не должен быть пустым". Вопрос в том, как правильно настроить мое приложение django или экземпляр docker на использование переменных env в любой ситуации? Несколько дней назад я пытался написать secret_key, не скрывая его, но мой отладчик не работает при соединении с базой данных, так что кажется, что мои переменные вообще не видны. Но, как я уже сказал, когда я запускаю свое приложение в обычном режиме или как экземпляр docker, оно работает нормально, мой .env файл виден для django. Здесь вы можете найти мой settings.py
SECRET_KEY = os.getenv('SEC_KEY')
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': os.getenv('DB_NAME'),
'USER': os.getenv('DB_USER'),
'PASSWORD': os.getenv('DB_PASSWORD'),
'HOST': os.getenv('DB_HOST'),
'PORT': 5432
}
}
А вот мой файл docker-compose:
version: '3.4'
services:
electronicshop:
image: electronicshop
build:
context: .
dockerfile: ./Dockerfile
ports:
- "8000:8000"
volumes:
- .:/electronic_shop
command: >
sh -c "python manage.py migrate &&
python manage.py runserver 0.0.0.0:8000"
# env_file:
# - .env
environment:
- DB_HOST=db
- DB_NAME=${DB_NAME}
- DB_USER=${DB_USER}
- DB_PASS=&{DB_PASSWORD}
- DEBUG=1
depends_on:
- db
restart: always
db:
image: postgres:14.1-alpine
environment:
- POSTGRES_DB=${DB_NAME}
- POSTGRES_USER=${DB_USER}
- POSTGRES_PASSWORD=${DB_PASSWORD}
ports:
- 5454:5454/tcp
Проблема решена. Мне пришлось добавить secret_key в окружение docker-compose.