在docker中使用envvariables编写运行命令
运行命令docker-compose run -e TYPE=result mongo_db_backup
应该给我给定TYPEvariables的值:
mongo_db_backup: image: 'mongo:3.4' volumes: - '/backup:/backup' command: sh -c '$$(echo $TYPE)'
但是,我得到的错误The TYPE variable is not set. Defaulting to a blank string.
The TYPE variable is not set. Defaulting to a blank string.
我究竟做错了什么
发生这种情况的时候,Compose展开$TYPE
然后到达容器的内部。 Compose将在shell或主机环境中查找$TYPE
环境variables,并将其值replace为。
这将使用以下terminal命令:
泊坞窗,compose.yml
command: sh -c 'echo $TYPE'
terminal命令
TYPE='hello world' docker-compose run web
当主机中没有$TYPE
环境variables时,Compose将$TYPE
的值设置为空string并输出一个警告。
由于我们希望在容器中运行的shell内部扩展,因此需要通知撰写不要扩展$TYPE
。
为此使用
泊坞窗,compose.yml
command: sh -c "echo $$TYPE"
在
$TYPE
加上一个美元符号就可以转义它。
参考:
- 编写中的variablesreplace