我在从 docker-compose.yml 文件(版本 -3.7)读取 .env 变量时遇到问题,这里首先我解释我的文件夹和示例代码结构
我的文件夹结构
my_app
>
src
Dockerfile
docker-compose.yml
.包封/包围(动词envelop的简写)
.env文件
这是我的示例 .env 文件
ENVIRONMENT_NAME=DEV
DATABASE_NAME=testing
docker-compose.yml文件
这是我的docker作曲样本。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运行我的应用程序测试app.py)时,它没有像我预期的那样打印环境变量。当前代码的输出是,
None None 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', 'PYTHON_GET_PIP_URL': 'https://github.com/pypa/get-pip/raw/ffe826207a010164265d9cc807978e3604d18ca0/get-pip.py', 'PYTHON_GET_PIP_SHA256': 'b86f36cc4345ae87bfd4f10ef6b2dbfa7a872fbff70608a1e43944d283fd0eee', 'HOME': '/root'})
我使用的要求是,
我想解决这个环境阅读问题。我不知道问题出在哪里,@任何人请帮我解决这个问题。
< code>docker run不会找到< code>env文件,因为该env文件是在< code>docker-compose.yml文件中指定的。
试着像这样运行你的容器:
docker-compose run my_app_test app.py
您没有在构建时设置 ENV,因此 docker-compose 将能够在您在撰写文件中设置配置时读取 env 文件,但 docker run
不会读取 env,因为您需要指定
env 文件
您需要在docker run命令中指定env-file
docker run --env-file .env my-app-test app.py
或只检查环境
docker run --env-file .env --entrypoint printenv my-app-test
或运行堆栈
docker-compose up
我必须从我的 Groovy 脚本访问一个环境变量。我没有使用詹金斯。如何获取变量?
我已经在windows上设置了环境变量,实际上当我回显它们时,我可以看到它们的详细信息,但是,当我运行测试时,它们似乎看不到环境变量。我见过类似的问题,但它们没有帮助。像这个,这个等等,但是运气不好。 这是我的应用程序测试。属性文件 那么,这就是我得到的例外:
问题内容: 我正在尝试在Jenkins中使用DSL管道。我认为如果可以将项目名称用作脚本的一部分,那就太好了。 我得到错误: 我以为我遵循了这些指示,并且将其作为变量之一。 我决定尝试: 在我的DSL中,结果显示为: 这是我所期望的。 另一个博客提到: 使用环境变量 我们有两种方法来获取它们的价值。在启动过程中传递的属性,由于Groovy与Java的紧密联系,我们可以理解为。 以Java方式读取普
当试图使用webapp(使用Elixir/Ecto作为后端语言)、postgres数据库、elasticsearch和kibana创建一个项目时,使用以下docker-compose.yaml文件: ,
本文向大家介绍python访问系统环境变量的方法,包括了python访问系统环境变量的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了python访问系统环境变量的方法。分享给大家供大家参考。具体如下: 希望本文所述对大家的Python程序设计有所帮助。
如果有人能帮忙,那就太好了!