我需要在运行时为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
...
答案 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