docker工人组成variables替代

看来,我不理解有关variablesreplace在下面的页面(我的variablesNUM不注册): https : //docs.docker.com/compose/compose-file/#variable-substitution

看下面的截图。 在Mac OSX上运行这个。

码头工人组成

关于docker-composevariablesreplace ,可以取决于如何设置NUM
set NUM=5只会将其设置在当前shell中,而不是另一个进程。
确保input:

 export NUM=5 

在文档中提到:

当您的configuration需要字面美元符号时,您可以使用$$(双美元符号)。 这也阻止了Compose插入一个值,所以$$允许你引用你不想被Compose处理的环境variables。

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

如果您忘记并使用单个美元符号($),则Compose会将该值解释为环境variables,并会警告您:

VAR_NOT_INTERPOLATED_BY_COMPOSE未设置。 replace一个空string。

据此,撰写文件的第03行应该是:

 command: echo $$NUM 

除了上面@ ayman-nedjmeddine提供的$ $$解决scheme之外,还需要做以下操作,为了使shellvariables可用,您有两个选项

选项1

  • 以root身份login,设置您的variables并执行docker-compose
  • root> export NUM = 5
  • 根>docker – 组成

选项2

  • 从用户shell中使用sudo -E-E将用户shell env传播到sudo,
  • 提供docker/docker组成的sudo访问权限
  • 添加:SETENV: sudoer文件中的命令在sudo中使用-E选项
  • 例如:

     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