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
)
这是我的设置:
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'
($STORE_URL_SECURE
)