【发布时间】:2018-02-24 14:01:20
【问题描述】:
我需要设置一个环境变量CLASSPATH。在该变量中,我需要设置命令的结果:
hadoop classpath --glob
这将返回大量 java 库,它们都需要设置到 CLASSPATH 变量中。最大的问题是我只能在 docker build 完成后运行这个命令,这意味着我必须在ENTRYPOINT 中执行。但我就是不能让它工作。我尝试了不同的方法:
ENTRYPOINT ["sh", "-c", "export CLASSPATH=$(hadoop classpath --glob) ...."
ENTRYPOINT ["sh", "-c", "set CLASSPATH=$(hadoop classpath --glob) ...."
ENTRYPOINT ["sh", "-c", "CLASSPATH=$(hadoop classpath --glob) ...."
ENTRYPOINT ["sh", "-c", "/bin/bash && export CLASSPATH=$(hadoop classpath --glob) ...."
但它没有任何工作。该命令本身正在运行,我使用以下方法对其进行了测试:
ENTRYPOINT ["sh", "-c", "echo $(hadoop classpath --glob) >> /tmp/classpath.tmp ...."
此文件在启动后包含正确的内容。因此,设置和持久化环境变量只是一个问题。我应该如何设置环境变量?通常你使用类似的东西
ENV CLASSPATH="some classpath"
但这里我不能使用ENV 语句,因为它不会处理命令$(hadoop classpath --glob)
【问题讨论】:
标签: docker environment-variables