X 变量未设置。默认为空白字符串

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

我在 .env 中有一个 django 密钥,它被读取为空白字符串,密钥的一部分附在下面

SECRET_KEY=|$u6qthu06zp|$q

在 $ 符号开始的地方我不断收到消息

level=warning msg="未设置“u6qthu06zp”变量。默认为空字符串。" level=warning msg="未设置“q”变量。默认为空字符串。"

设置文件有

import os
import environ

PROJECT_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
BASE_DIR = os.path.dirname(PROJECT_DIR)


env = environ.Env(DEBUG=(bool,False))

environ.Env.read_env(env_file=".env")

最后写入密钥

SECRET_KEY = env("SECRET_KEY")

但是我无法运行 docker-compose build --remove-orphan 因为 SECRET_KEY 似乎以空字符串形式返回,因为 $ 符号导致了某种故障。任何建议将不胜感激

make 文件有

ifneq (,$(wildcard  ./ .env))
 include .env
 export
 ENV_FILE_PARAM = --env-file .env
endif

我正在尝试跑步

docker-compose up --build -d --remove-orphans
django docker-compose django-environ
1个回答
0
投票

确保将环境变量的值放在引号中。因此 docker 会将整个值视为一个字符串。

当我想使用 docker compose 构建和运行我的 django 应用程序时,我在 django 应用程序中遇到了同样的错误。 问题是我在 .env 文件中添加了密钥,如下行:

SECRET_KEY=django-insecure-x6=*@#26$q#b&9m3893a7_1i2(=k)$s%5q

当我尝试构建 docker compose 时,它会尝试读取 .env 文件,并认为“$”后面的“q”和“s”字符是环境变量。因此,我将密钥放在单引号中,如下所示,它不再显示警告:

SECRET_KEY='django-insecure-x6=*@#26$q#b&9m3893a7_1i2(=k)$s%5q'

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