从文件设置变量

时间:2018-10-12 23:30:24

标签: docker docker-compose sh

是否可以通过docker compose中的文件设置变量?

以下内容在撰写时不起作用(但是,如果您将其附加到容器上,则不会起作用):

version: '2'
services:
  foo:
    image: busybox
    command:
      - /bin/sh
      - -c
      - |
          echo "hello" > id #this file will be supplied by a volume-from
          ls
          cat id
          TEST=$(cat id)   #This line does not work
          echo TEST

产生的错误是:

ERROR: Invalid interpolation format for "command" option in service "foo":

1 个答案:

答案 0 :(得分:1)

您必须更改一下配置文件。

version: '2'
services:
  foo:
    image: busybox
    command:
      - /bin/sh
      - -c
      - |
          echo "hello" > id 
          ls
          cat id
          TEST=$$(cat id)
          echo TEST

我检查了Docker版本Docker version 18.06.0-ce和Docker撰写版本docker-compose version 1.20.0-rc2,

https://github.com/docker/docker.github.io/blob/master/compose/compose-file/index.md#variable-substitution

  

当您的配置需要一个$时,可以使用$$(美元符号)   字面的美元符号。这也可以防止Compose插值   值,因此$$允许您引用您所使用的环境变量   不想由Compose处理。