【发布时间】:2020-07-17 09:20:31
【问题描述】:
我在从 docker-compose.yml 文件(版本 -3.7)读取 .env 变量时遇到问题,这里首先解释我的文件夹和示例代码结构
我的文件夹结构
my_app
-
src
- config.py
- app.py
- requirements.txt
- 其他文件
-
Dockerfile
-
docker-compose.yml
-
.env
.env 文件
这是我的示例 .env 文件
ENVIRONMENT_NAME=DEV
DATABASE_NAME=testing
docker-compose.yml 文件
这是我的示例 docker-compose.yml 文件(版本:3.7)
version: "3.7"
services:
my_app_test:
env_file: ./.env
image: my-app-test
build:
context: ./src
dockerfile: Dockerfile
Dockerfile
这是我的示例 Dockerfile
FROM python:3.7-alpine
# Install required packages
RUN apk add --update --no-cache \
build-base \
postgresql-dev \
linux-headers \
pcre-dev \
py-pip \
bash \
curl \
openssl \
nginx \
libressl-dev \
musl-dev \
libffi-dev \
rsyslog \
&& pip install Cython
# Create container's working directory
RUN mkdir -p /MyApp
# Copy all source files to the container's working directory
COPY ./ /MyApp
# Install all python dependency libs
RUN pip install -r /MyApp/requirements.txt
WORKDIR /MyApp
ENTRYPOINT ["python3"]
src/config.py
这里在配置文件中,我正在读取所有的环境变量
import os
from pathlib import Path
from dotenv import load_dotenv
ENV_PATH = Path('.env')
load_dotenv(dotenv_path=ENV_PATH)
ENVIRONMENT_NAME = os.getenv('ENVIRONMENT_NAME')
DATABASE_NAME = os.getenv("DATABASE_NAME")
src/app.py
在 app.py 文件中,我从 config.py 获取变量并在我的项目中使用它。当我在构建 docker 映像后运行此文件时,它没有按预期工作。所有 env 变量都被读取为 None
import config
import os
print(config.ENVIRONMENT_NAME)
print(config.DATABASE_NAME)
# Access all environment variables
print('\n')
print(os.environ)
我正在尝试从 docker-compose 文件而不是 Dockerfile 访问环境集。
Docker 构建工作正常,之后当我尝试运行 docker 映像时(sudo docker run my-app-test app.py)它不打印如我所料的环境变量。 当前代码的输出是,
没有任何 没有任何 environ({'PATH': '/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin', 'HOSTNAME': '6cfc0c912772','LANG':'C.UTF-8','GPG_KEY':'0D96DF4D4110E5C43FBFB17F2D347EA6AA65421D','PYTHON_VERSION':'3.7.5','PYTHON_PIP_VERSION':'19.3.1_THIPURL:'https ://github.com/pypa/get-pip/raw/ffe826207a010164265d9cc807978e3604d18ca0/get-pip.py”, 'PYTHON_GET_PIP_SHA256': 'b86f36cc4345ae87bfd4f10ef6b2dbfa7a872fbff70608a1e43944d283fd0eee', 'HOME': '/根'})要求是,
- python=3.7
- python-dotenv==0.12.0
我想解决这个环境读取问题。我不确定问题出在哪里,@anyone 请帮我解决这个问题。
【问题讨论】:
标签: python python-3.x docker docker-compose dockerfile