在docker compose run命令中使用env变量

时间:2017-09-27 19:15:19

标签: docker docker-compose

运行命令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.我做错了什么

1 个答案:

答案 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使其逃脱。

参考: