Héc*_*tor 1 environment-variables docker
我有以下命令:
docker run -e "DB_HOST=thehost" --rm my_application echo $DB_HOST
Run Code Online (Sandbox Code Playgroud)
但什么也没显示。我期待显示“ thehost”。
我尝试使用简单引号,双引号和不带引号。
我想念什么?我需要在my_aplication的Dockerfile中指定ENV参数吗?
如果我做:
docker run -e "DB_HOST=thehost" --rm my_application echo $PATH
Run Code Online (Sandbox Code Playgroud)
它正确显示PATH值。但是它忽略了我的环境变量。
这里有两层:
在第一个例子中
docker run ... echo $DB_HOST
Run Code Online (Sandbox Code Playgroud)
您的本地Shell会在将变量引用传递给Docker之前捕获它。
如果您明确单引号
docker run ... echo '$DB_HOST'
Run Code Online (Sandbox Code Playgroud)
Docker将找到/bin/echo(假设它存在于容器中)并以字符串$DB_HOST作为参数启动它,但是同样,由于Docker方面没有外壳,它会按原样打印该字符串。
您问题的直接答案是强制在Docker端安装一个shell
docker run -e DB_HOST=thehost --rm my_application \
sh -c 'echo $DB_HOST'
Run Code Online (Sandbox Code Playgroud)
在更高的级别上:
os.environ,Ruby的ENV,节点的process.env,等等)#!/bin/sh)CMD some command,Docker将自动将其包装在shell中;相当于CMD ["sh", "-c", "some command"]ENTRYPOINT,但是使用这种方式可能是一个错误| 归档时间: |
|
| 查看次数: |
649 次 |
| 最近记录: |