2015-12-22 84 views

回答

4

关于docker-compose variable substitution,它可以依靠NUM的设置方式。
set NUM=5只会将其设置在当前shell中,而不是其他进程。
确保键入:

export NUM=5 
+0

问题在于引用了compose的变量替换机制,它使用来自主机的变量,而不是容器。 –

+0

@AdrianMouat哦...你的意思是https://github.com/docker/compose/blob/ea8cc1c3dc47c9ed3bff56c5a8d99175b57af650/docs/compose-file.md#variable-substitution – VonC

+0

@AdrianMouat我已经重写了相应的答案。 – VonC

1

它在docs提到:

可以使用$$(双美元符号)时,您的配置需要 文字美元符号。这也会阻止Compose插入 值,因此$$允许您引用您不希望由Compose处理的环境变量。

web: 
    build: . 
    command: "$$VAR_NOT_INTERPOLATED_BY_COMPOSE" 

如果你忘记了,用一个美元符号($),撰写解释 值作为一个环境变量,并会向您发出警告:

的VAR_NOT_INTERPOLATED_BY_COMPOSE未设置。用一个空的 字符串替换。

根据的是,您撰写文件的行03应该是:

command: echo $$NUM 
1

除了$$通过@艾曼 - nedjmeddine上面还需要提供解决方案做以下,使shell变量在撰写可有两种选择

选项1

  • 以root身份登录,设置您的变量和执行搬运工人,用
  • 根>出口NUM = 5
  • 根>搬运工-构成向上

选项2

  • 使用sudo -E从用户壳,-E将传播用户壳ENV到须藤,
  • 提供sudo访问码头/码头 - 组合
  • :SETENV:添加到sudoer文件中的命令中使用在须藤210选项
  • 如:

    sudo visudo -f /etc/sudoers.d/docker-compose 
        ALL ALL=(ALL:ALL) NOPASSWD:SETENV: /usr/local/bin/docker-compose 
    sudo visudo -f /etc/sudoers.d/docker 
        ALL ALL=(ALL:ALL) NOPASSWD:SETENV: /usr/bin/docker 
    
  • 最后用

    user1>export NUM=5 
    user1>sudo -E docker-compose up