도커 사용 중에 마주친 어려운 오류를 겪었다. 처음에는 간단해 보였지만, 해결하기까지 많은 시간을 소비했다. 이 문제를 해결한 후, 같은 문제로 고통 받는 다른 사람들을 위해 이 해결 방법을 공유하기로 했다. 특히 해당 글을 보고 많은 사람들이 같은 문제로 어려움을 겪고 있음을 알게 됐다.
다음과 같은 오류 메시지가 나타난다.
ERROR: failed to solve: process "/bin/sh -c ./gradlew bootJar" did not complete successfully: exit code: 127
이 오류는 ./gradlew bootJar 명령어를 도커 파일 빌드 중에 실행하지 못할 때 발생한다. exit code 127은 "컨테이너의 커맨드가 존재하지 않는 경우"에 나타나는 코드다. 이 오류 메시지를 처음 보면 해결책을 찾기 어려워진다.
문제의 원인은 간단하다. 윈도우에서는 CRLF 개행 방식을 사용하는 반면, 도커가 작동하는 리눅스 환경에서는 LF 개행 방식이 사용된다. 윈도우 컴퓨터로 도커파일을 작성한 후에서 도커를 작동시에 해당 오류가 발생 할 수 있다.
Visual Studio Code에서 작성한 Dockerfile을 열고, 오른쪽 하단에 있는 CRLF를 클릭하여 LF로 변경한다. 이 간단한 변경만으로도 문제가 해결된다! 참고로 dockerfile말고도 gradlew도 작업을 수행해주어야한다.
변경 후 문제가 성공적으로 해결됐다.
이 게시글이 비슷한 문제로 고생하는 다른 사용자들에게 도움이 되길 바란다.