docker-compose env_file在脚本中可用,但在运行命令

时间:2015-12-18 11:12:23

标签: docker docker-compose

这是我的设置:

搬运工-compose.yml:

php:
  container_name: php
  image: pawlik/kinetic-php:5.5
  env_file:
    - .env.defaults

.env.defaults:

STORE_URL_SECURE=https://kinetic.docker.dev/

在正在运行的图像中,我有这么简单的脚本:

showvars.sh

echo $STORE_URL_SECURE

现在正在运行:

$ docker-compose run php bash showvars.sh
Starting data
https://kinetic.docker.dev/

看起来不错,但是

$ docker-compose run php echo $STORE_URL_SECURE
Starting data

# empty!

有什么区别?为什么在第二个例子中这个ENV var是空的?

1 个答案:

答案 0 :(得分:2)

docker-compose run php echo $STORE_URL_SECURE表示执行docker-compose命令的shell也解释$STORE_URL_SECURE(未在该shell会话中定义或设置)。
因此# empty!

然而,这可行:

 docker-compose run php /bin/sh -c 'echo $STORE_URL_SECURE'

strong quotes or simple quotes阻止shell立即解释$STORE_URL_SECURE