Как прочитать файл .env при создании образа с помощью Dockerfile? - PullRequest
0 голосов
/ 27 сентября 2018

Вот мой файл 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
...