У меня есть приложение Python, которое использует переменные среды, и я хочу выполнить настройку dev \ prod с одним файлом Dockerfile и одним файлом docker-compose.yml (изменяйте только файл env с переменными среды).
Вот файлы, которые я использую для запуска приложения:
Dockerfile :
FROM python:3.7-slim-buster
RUN apt-get update
WORKDIR /usr/src/app
RUN mkdir /usr/src/app/excel_users_dump
COPY ./requirements.txt .
RUN pip install -r requirements.txt
COPY . .
RUN python /usr/src/app/myblumbot/main.py
docker-compose.yml :
version: '3'
services:
bot:
build:
context: .
environment:
ENV: ${ENV}
PYTHONPATH: ${PYTHONPATH}
PYTHONBUFFERED: ${PYTHONBUFFERED}
volumes:
- states:/var/myblumbot_states
volumes:
states:
.env (в том же каталоге, что и docker-compose.yml)
PYTHONBUFFERED=1
PYTHONPATH=/usr/src/app
ENV=DEV
Когда я запускаю команду docker-compose up
, она создает иговорит, что у меня не было переменных среды, поэтому приложение не может запуститься.
env = os.environ['ENV']
KeyError: 'ENV'
Но если я добавлю ENV VAR value
в Dockerfile , все будет хорошо.
Как передать переменные из docker-compose и файла .env?