在运行时为Docker容器设置环境变量

时间:2020-07-02 04:15:14

标签: bash docker docker-compose centos dockerfile

我需要在运行时为docker容器设置环境变量。该值只能在运行时通过组合两个其他在运行时可用的变量来确定。以一种简单的形式,以下操作无效。

docker run -ti -e host="name" -e port="123" centos:7 bash -c "export url=$host:$port; env"

当$ host和$ port的值可用于构造$ url时,在url为空的情况下返回以下内容?

...
host=name
url=:
port=123
...

1 个答案:

答案 0 :(得分:2)

您必须单引号shell命令,以避免您的交互式shell在docker shell看到变量之前扩展变量:

docker run -ti -e host="name" -e port="123" centos:7 bash -c 'export url=$host:$port; env'

使用单引号将您的shell传递export url=$host:$port; env到Docker。

用双引号引起来,您当前的shell将首先按照职责扩展变量,因此只需传递url=:; env