运行命令docker-compose run -e TYPE=result mongo_db_backup
应该给出给定TYPE变量的值:
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.
我做错了什么
答案 0 :(得分:5)
Compose恰好在它到达容器内部之前展开$TYPE
。 Compose在shell或主机环境中查找$TYPE
环境变量,并将其值替换为。
这将使用以下终端命令:
<强>搬运工-compose.yml 强>
command: sh -c 'echo $TYPE'
终端命令
TYPE='hello world' docker-compose run web
如果主机中没有$TYPE
环境变量,Compose会将$TYPE
的值设置为空字符串并输出警告。
需要通知Compose不要扩展$TYPE
,因为我们希望它在容器中运行的shell内扩展。
用于此用途
<强>搬运工-compose.yml 强>
command: sh -c "echo $$TYPE"
将美元符号前置
$TYPE
使其逃脱。