【发布时间】:2020-08-10 08:22:45
【问题描述】:
我正在玩 Docker(暂时不使用 docker-compose)。
问题是我在.env文件中设置的变量对settings.py不可见,导致None在settings.py中被print(os.environ.get('TEST_VAR'))渲染。
如果我在 Dockerfile 中定义 TEST_VAR 变量,问题就会消失。
有人知道我在做什么错吗?
这是我的 Django 项目的样子:
项目布局:
my_project
my_project
settings.py
.env
manage.py
requirements.txt
Dockerfile
Dockerfile:
FROM python:3
ENV LANG=C.UTF-8 LC_ALL=C.UTF-8
RUN mkdir /app
WORKDIR /app
ADD . /app/
RUN apt-get -y update
RUN apt-get install -y --fix-missing \
libaio1 \
git \
wget \
curl \
pkg-config \
python3-dev \
software-properties-common \
zip \
&& apt-get clean && rm -rf /tmp/* /var/tmp/*
RUN pip install --no-cache-dir -r requirements.txt
EXPOSE 8000
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]
.env
TEST_VAR='wow'
我运行的命令:
docker build -t simple-project .
docker run -it -p 8000:8000 simple-project
请注意,.env 与 settings.py 处于同一级别,但是我尝试将其上移一级,例如 manage.py 所在的位置。
【问题讨论】:
-
你是如何设置
.env的?只是放文件而不是暴露变量。 -
Em...我是部署、Docker 等方面的新手...您能澄清一下吗?
-
最好使用 django-environ 吗? django-environ.readthedocs.io/en/latest