[공부정리] 도커 빌드 시 발생하는 오류 해결하기: CRLF vs LF

jeyong·2024년 1월 27일
0

공부 / 생각 정리  

목록 보기
13/121


도커 사용 중에 마주친 어려운 오류를 겪었다. 처음에는 간단해 보였지만, 해결하기까지 많은 시간을 소비했다. 이 문제를 해결한 후, 같은 문제로 고통 받는 다른 사람들을 위해 이 해결 방법을 공유하기로 했다. 특히 해당 글을 보고 많은 사람들이 같은 문제로 어려움을 겪고 있음을 알게 됐다.

1. 발생하는 오류

다음과 같은 오류 메시지가 나타난다.

ERROR: failed to solve: process "/bin/sh -c ./gradlew bootJar" did not complete successfully: exit code: 127

이 오류는 ./gradlew bootJar 명령어를 도커 파일 빌드 중에 실행하지 못할 때 발생한다. exit code 127은 "컨테이너의 커맨드가 존재하지 않는 경우"에 나타나는 코드다. 이 오류 메시지를 처음 보면 해결책을 찾기 어려워진다.

2. 해결방법

문제의 원인은 간단하다. 윈도우에서는 CRLF 개행 방식을 사용하는 반면, 도커가 작동하는 리눅스 환경에서는 LF 개행 방식이 사용된다. 윈도우 컴퓨터로 도커파일을 작성한 후에서 도커를 작동시에 해당 오류가 발생 할 수 있다.

2-1. CRLF/LF 개념 설명

  • CRLF/LF는 운영 체제에 따라 다른 개행 방식이다. 유닉스 계열 시스템(리눅스, 맥)은 LF 방식을, 윈도우는 CRLF 방식을 사용한다.
  • CR과 LF는 각각 'Carriage Return'과 'Line Feed'의 약자다. 이 개념은 고전 타자기에서 종이를 제자리로 되돌리는 동작(CR)과 줄을 바꾸기 위해 종이를 올리는 동작(LF)에서 유래했다.

2-2. 해결방법 실행


Visual Studio Code에서 작성한 Dockerfile을 열고, 오른쪽 하단에 있는 CRLF를 클릭하여 LF로 변경한다. 이 간단한 변경만으로도 문제가 해결된다! 참고로 dockerfile말고도 gradlew도 작업을 수행해주어야한다.

변경 후 문제가 성공적으로 해결됐다.

이 게시글이 비슷한 문제로 고생하는 다른 사용자들에게 도움이 되길 바란다.

profile
노를 젓다 보면 언젠가는 물이 들어오겠지.

0개의 댓글