我需要设置一个环境变量CLASSPATH
。在该变量,我需要设置一个命令的结果:Docker从命令或文件设置环境变量
hadoop classpath --glob
这将返回一吨的Java库,他们都需要进行设定成CLASSPATH
变量。最大的问题是我只能在Docker构建完成后才能运行此命令,这意味着我必须在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)
感谢您的回答,但这不会工作。我不能做'运行回声'导出NAME = TARUNLAWANI“>>〜/ .profile',因为当我用我真正需要的东西替换你的名字时'hadoop classpath --glob'我会得到一个错误,因为此时hadoop没有启动然而。只有在构建完成之后,才能运行此命令。 – Mulgard
然后在Dockerfile的最后一条命令中更改shell –
我不明白它应该如何帮助更改shell。 – Mulgard