【发布时间】:2020-02-23 00:19:30
【问题描述】:
我有一个使用环境变量的 Python 应用程序,我想使用一个 Dockerfile 和一个 docker-compose.yml 文件进行 dev\prod 设置(仅使用环境变量更改 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'
但如果我在 Dockerfile 中添加ENV VAR value,一切都会正常运行。
如何从 docker-compose 和 .env 文件中传递变量?
【问题讨论】:
-
@Mišo 我尝试了该问题的所有答案,但对我来说没有成功:(
-
请编辑此问题以包含(尤其是)您的
docker-compose.yml的实际文本(不是外部链接)以及您观察到的实际行为。 -
@DavidMaze 我已经编辑了这个问题。谢谢。
-
您的
Dockerfile没有CMD。 (而且您的docker-compose.yml文件也没有command:。)您的容器实际运行的进程是什么?您如何验证问题?
标签: docker docker-compose