在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