首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >docker-编写不读取环境变量

docker-编写不读取环境变量
EN

Stack Overflow用户
提问于 2020-04-04 03:48:12
回答 1查看 2.7K关注 0票数 3

当尝试使用坞-组合时,它似乎不会从主机系统读取导出的环境变量。

在编写本报告时,有问题的完整代码可以找到这里

$ docker info

代码语言:javascript
复制
Client: Docker Engine - Community
Version:           19.03.6
API version:       1.40
Go version:        go1.12.16
Git commit:        369ce74a3c
Built:             Thu Feb 13 01:27:58 2020
OS/Arch:           linux/amd64
Experimental:      false
Server: Docker Engine - Community
Engine:
Version:          19.03.8
API version:      1.40 (minimum version 1.12)
Go version:       go1.12.17
Git commit:       afacb8b
Built:            Wed Mar 11 01:29:16 2020
OS/Arch:          linux/amd64
Experimental:     false
containerd:
Version:          v1.2.13
GitCommit:        7ad184331fa3e55e52b890ea95e65ba581ae3429
runc:
Version:          1.0.0-rc10
GitCommit:        dc9208a3303feef5b3839f4323d9beb36df0a9dd
docker-init:
Version:          0.18.0
GitCommit:        fec3683

$ docker-compose info

代码语言:javascript
复制
docker-compose version 1.21.0, build unknown
docker-py version: 3.4.1  
CPython version: 3.7.3    
OpenSSL version: OpenSSL 1.1.1d  10 Sep 2019 

具体来说,我对文件docker-compose.yml及其environment部分感兴趣

代码语言:javascript
复制
version: "3"
...
environment:
    - FERRO_MONGO_HOST=ferro-mongo
    - FERRO_MONGO_USER=ferrothorn
    - FERRO_MONGO_PASS=ferrothorn-local
    - FERRO_MONGO_BASE=ferrothorn
    - FERRO_LOG_LEVEL=1
    - FERRO_SECRET

在调用docker-compose up时,环境变量的设置方式与我期望它们查看docker文件的方式相同。但是,如果我导出一些变量,则导出到shell的变量不会在文件中定义的默认情况下使用。对于没有默认设置的FERRO_SECRET和设置默认值的FERRO_LOG_LEVEL这样的变量,情况就是这样。

我使用的命令序列看起来像

代码语言:javascript
复制
export FERRO_SECRET=very_secret_pw
export FERRO_LOG_LEVEL=2
docker-compose up --build # tried with and without --build flag

而它只是..。不起作用?我也试过用我在网上看到的伎俩

代码语言:javascript
复制
FERRO_SECRET=very_secret_pw FERRO_LOG_LEVEL=2 docker-compose up --build

但没有骰子。

由于此框实际上是使用localhost docker服务器在windows 10上运行的wsl实例,因此我认为可能存在一些错误,但是在同一台计算机上的windows powershell中重新创建这些步骤会产生相同的结果,就像构建常规fedora-server框一样。

我设置环境变量错误吗?我似乎还记得以前在某个地方做过这件事,而且它还在工作,是这个插件编写版本的错误,还是我对它的配置?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-10 00:41:24

看起来,Docker是将等号后面的值解释为文字。

看看https://docs.docker.com/compose/compose-file/#variable-substitution。它提到使用env文件来设置默认值或内联地执行它们。它还为变量使用了一个美元符号和大括号。

例如:- MY_VAR=${MY_ENV_VAR:my_var_default_value}

在我的所有情况下,我要么在替换前加上'$‘。在某些情况下,我也用牙套环绕着它。

FERRO_LOG_LEVEL=${FERRO_LOG_LEVEL:1}

FERRO_SECRET=${FERRO_SECRET}

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61023525

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档