SECRET_KEY 设置不能为空。姜戈码头

问题描述 投票:0回答:2

我尝试在堆栈和其他网站上找到解决方案,但没有结果。我和 django 战斗了好几天了。

我将 django 应用程序进行了 Docker 化,并且运行良好。我正在使用 .env 文件来提供秘密变量。从这里开始问题。我无法在 Visual Studio Code 中使用 travis CI 或调试模式,因为我的环境变量不可见。当我尝试运行 travis 或调试器时,我收到错误“SECRET_KEY 设置不能为空”。问题是,如何正确配置我的 django 应用程序或 docker 实例以在每种情况下使用环境变量?几天前,我尝试编写secret_key而不隐藏它,但是我的调试器无法与数据库连接,所以看起来我的变量根本不可见。但正如我所说,当我在正常模式下运行我的应用程序或作为 docker 实例运行它时,它工作正常,我的 .env 文件对于 django 是可见的。在这里你可以找到我的settings.py

from os.path import join, dirname
import os
from dotenv import load_dotenv
from django.contrib.messages import constants as messages


dotenv_path = join(dirname(__file__), '.env')
load_dotenv(dotenv_path)

BASE_DIR = Path(__file__).resolve().parent.parent
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
django visual-studio-code docker-compose environment-variables travis-ci
2个回答
0
投票

补充一下上面的答案: 只需为 SECRET_KEY 变量添加新行即可:

environment:
  - DB_HOST=db
  - DB_NAME=${DB_NAME}
  - DB_USER=${DB_USER}
  - DB_PASS=${DB_PASSWORD}
  - DEBUG=1
  - SECRET_KEY=${SECRET_KEY_VARIABLE_NAME_FROM_ENV_FILE}

-1
投票

问题解决了。我必须将 Secret_key 添加到 docker-compose 环境。

© www.soinside.com 2019 - 2024. All rights reserved.