docker-compose env_file 在脚本中可用但不能直接在 运行 命令中使用

docker-compose env_file available in script but not directy in run command

这是我的设置:

docker-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 是空的?

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'

阻止 shell 立即解释 $STORE_URL_SECURE