Вот мой файл Docker, который используется командой docker-compose build
:
FROM python:3.5
ENV PYTHONUNBUFFERED 1
RUN apt-get update \
&& apt-get install -y --no-install-recommends libnewlib-arm-none-eabi avr-libc git \
&& rm -rf /var/lib/apt/lists/* \
&& pip install cryptography
RUN mkdir /code
COPY . /code/
WORKDIR /code
RUN pip install -r /code/misc/requirements.txt
RUN mkdir /static
RUN python /code/manage.py migrate
RUN python /code/manage.py collectstatic --noinput
Вот служба в docker-compose.yml
, которая использует Dockerfile
:
version: "3.5"
services:
...
django:
build:
context: .
command: bash -c "/code/run/gunicorn.sh"
volumes:
- ./static:/data/django/static
- ./media:/data/django/media
depends_on:
- db
env_file:
- misc/envs/.env
Итак, когда я пытаюсь создать этот compose с помощью команды docker-compose build --no-cache
, он говорит, что эта переменная среды все еще не определена, даже если я пытаюсь просто добавить шаг RUN set -a && source /code/misc/envs/.env && set +a
в Dockerfile
UPD
В результате мой код, запущенный на последнем шаге Dockerfile
from django.core.exceptions import ImproperlyConfigured
import os
def get_env_setting(setting, default=None):
try:
return os.environ[setting]
except KeyError:
if default is not None:
return default
error_msg = "Set the %s env variable" % setting
raise ImproperlyConfigured(error_msg)
SECRET_KEY = get_env_setting('SECRET_KEY')
, выдает ошибку:
File "/code/project/settings.py", line 34, in <module>
SECRET_KEY = get_env_setting('SECRET_KEY')
File "/code/project/settings.py", line 22, in get_env_setting
raise ImproperlyConfigured(error_msg)
django.core.exceptions.ImproperlyConfigured: Set the SECRET_KEY env variable