我需要設置一個環境變量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