docker工人组成variables替代
看来,我不理解有关variablesreplace在下面的页面(我的variablesNUM
不注册): https : //docs.docker.com/compose/compose-file/#variable-substitution
看下面的截图。 在Mac OSX上运行这个。
关于docker-compose
variablesreplace ,可以取决于如何设置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