在docker-compose中,我可以使用环境变量来构造另一个环境变量吗?

时间:2019-12-09 09:59:05

标签: docker docker-compose

在docker-compose中,我可以使用环境变量来构造另一个环境变量吗? 例如:

?- pick(r, [[q,1,3], [q,9,7], [r,3,2], [r,8,7]], Z).
  Z = [[r, 3, 2], [r, 8, 7]] .

?- pick(q, [[q,1,3], [q,9,7], [r,3,2], [r,8,7]], Z).
  Z = [[q, 1, 3], [q, 9, 7]] .

如果有可能-那么我该如何实现?

1 个答案:

答案 0 :(得分:1)

TL;灾难恢复:否

docker-compose docs explain this too here

docker-compose是一种编写docker run ...命令的好方法(如果我输入错了,可以纠正我吗?)。因此,一个简单的测试告诉我,只有在开发环境中存在该环境变量时,您才能在docker-compose中使用另一个环境变量创建一个环境变量。

所以

environment: 
  - HOST: localhost
  - WITH_PORT: ${HOST}:8080 #host read from env variable above

在这里,HOST必须存在于您的环境中而不是容器环境中(这可能不是您想要的)。

~ $ docker run -it -e c=${a} -e a=b ubuntu env
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=4f27e057b515
TERM=xterm
c=
a=b
HOME=/root
 ~ $ docker run -it -e c=${PATH} -e a=b ubuntu env
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=ba84596bfdf3
TERM=xterm
c=/usr/local/opt/bison/bin:/Users/username/anaconda3/bin:/Users/username/anaconda2/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/go/bin:/opt/puppetlabs/bin:/usr/local/munki:/Applications/apache-maven-3.5.4/bin:/Users/username/opt/packages/cassandra/bin:/Users/username/bin
a=b
HOME=/root