2017-01-02 1 views
3

나는 나의 봄 부팅 응용 프로그램을 시작하려면 다음 CMDDockerfile 있습니다jar 실행을위한 와일드 카드가 docker CMD에서 작동하지 않는 이유는 무엇입니까?

FROM java:8-jre 
# ... 
CMD ["java", "-jar", "/app/file*.jar"] 

내가 생성 된 이미지에서 컨테이너를 시작하려고 내가 얻을 :

Error: Unable to access jarfile /app/file*.jar 

을하지만 난을 무시할 때 CMD 컨테이너를 시작하고 컨테이너에서 명령을 실행하면 모든 것이 잘 작동합니다.

docker run -it <imageId> bash 
[email protected]<containerId>:/app# java -jar /app/file*.jar 
<spring boot app starts...> 

docker CMD를 사용하여 java -jar 명령에 와일드 카드를 사용할 수 있습니까? 와일드 카드를 사용하지 말라고 말하지 마십시오. 나는 그것을 고칠 수 있었다 답변에 따라 이유 ;-)

업데이트 의 원인을 사용할 :

CMD ["/bin/sh", "-c", "java -jar /app/file*.jar"] 
+1

'CMD java -jar/app/file * .jar'는 대략 동일하고 조금 더 직접적입니다. – atamanroman

답변

4

별표 확장의이 종류는 명령 행 처리기에 의해 이루어집니다 - 셸 - 당신은 java를 직접 호출하여이를 회피합니다.

Windows에서 "CMD/C"로 명령을 실행해야 완전히 처리 할 수 ​​있습니다.

대신 /bin/sh을 호출하십시오.

+0

또한 jar 파일과 함께 이러한 모든 것을 처리하는 실행 프로그램 스크립트를 배포하는 것이 좋습니다. Maven 빌드의 경우 일반적으로 appassembler-maven-plugin을 사용합니다. –

관련 문제