환경 변수 CLASSPATH
을 설정해야합니다. 그 변수에서 나는 명령의 결과 설정해야합니다 : 이것은 자바 라이브러리의 톤을 반환합니다Docker가 명령 또는 파일에서 환경 변수를 설정하십시오.
hadoop classpath --glob
을 그들은 모두 그 CLASSPATH
변수로 설정하는 데 필요한. 큰 문제는 도커 빌드가 완료된 후에 만이 명령을 실행할 수 있다는 것입니다. 즉, ENTRYPOINT
에서해야합니다. 그러나 나는 단지 그것을 작동시키지 않는다. 나는 differen 접근을 시도했다 :
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 ...."
이 파일에는 시작한 후에 올바른 내용이 들어 있습니다. 따라서 환경 변수를 설정하고 유지하는 데는 문제가 있습니다. 환경 변수를 어떻게 설정해야합니까? 내가 sh -c
의 SHELL
에 sh -lc
대신 배쉬 프로파일 변경을 사용하는 것을 선호 일반적으로 당신은
ENV CLASSPATH="some classpath"
같은 것을 사용하지만 늘이 경우 명령 $(hadoop classpath --glob)
답장을 보내 주셔서 감사합니다.하지만이 방법은 효과가 없습니다. 당신이 정말로 필요로하는 이름으로 당신의 이름을 대체 할 때 나는'Run echo "export NAME = TARUNLAWANI >> >> ~/.profile을 할 수 없습니다. 왜냐하면'hadoop classpath --glob'입니다. 왜냐하면 지금은 hadoop이 시작되지 않았기 때문에 오류가 발생했을 것입니다 아직. 모든 것이 빌드 된 후에 만이 명령을 실행할 수 있습니다. – Mulgard
그런 다음 Dockerfile의 마지막 명령에서 셸을 변경하십시오. –
셸을 변경하는 방법에 대해 이해하지 못합니다. – Mulgard