본문 바로가기

잡다/docker

[docker] 오늘의 삽질 : failed to solve with frontend dockerfile.v0: failed to create LLB definition: rpc error: code = Unknown desc = error

발생한 문제

강의를 듣고, WSL2 환경에서 Dockerfile을 빌드하여 이미지를 만드려고 했다. 사용된 Dockerfile은 다음과 같다.

FROM node:alpine as builder

WORKDIR '/home/node/app'
# app 폴더의 소유권을 node 유저로 변경 -> 후 build 폴더 만들 때 이용된다.
RUN chown -R node:node .
COPY package.json .
RUN npm install
COPY . .
#volume 같은 것은 개발 단계에나 의미 있는 코드지, 이미 개발된 코드에서는 관심 영역이 아님.
USER node
RUN npm run build
# /home/node/app


# RUN Phase
FROM nginx
COPY --from=builder /home/node/app/build /usr/share/nginx/html


 node:alpine 이미지를 기반으로 빌드된 파일을 얻은 후, nginx 이미지로 해당 빌드 파일을 복사하기 위한 코드이다. 분명 강의에서는 정상적으로 결과가 출력되었는데, 이상하게도 나의 환경에서는 계속하여 에러가 발생했다.

에러 메시지는 다음과 같다.

에러 발생시 코드는 전부 WSL2 상에 존재하며, vscode 에디터를 사용중이었다.


발견한 해결책

에러 메시지를 기반으로 스택 오버플로우를 찾다 보니, 다음과  같은 글이 존재했다.

발견한 글 : https://stackoverflow.com/questions/59868448/rpc-error-code-unknown-desc-failed-to-build-llb

 제시된 문제에 대한 해결책으로 제시된 것 중 하나는 docker에 부여한 메모리 및 cpu 자원의 크기를 늘리는 것이고, 다른 하나는 docker-compose v2를 사용하지 않도록 설정하는 것이다. 

 나의 경우 2번째 경우가 효과가 있었다. 대략 VS 기반 에디터를 사용하면 docker-compose 에 대한 에디터가 지닌 설정 (docker-compose 는 2가지 버전이 존재) 에 의해 해당 에러가 발생된다는 뜻인데, 여기서 영감을 얻어 vscode 에디터가 아닌 일반적인 shell 창에서 같은 명령을 실행해보기로 했다.

 결과는 성공적이었다... 

vscode를 사용하지 않았더니 문제가 해결되었다... 이게 대체 무슨;;

 인터넷에 어느 정도 검색해본 결과, 해당 에러의 포맷을 가진 다양한 에러가 있는 모양이다. 따라서 같은 에러로 보이더라도 다른 이유로 발생한 에러일 수 있다. 여러 방면으로 자신의 상황과 맞는 에러를 찾아보는 것이 좋을 것 같다.


결론

 현재 글에서 설명 중인 에러는 vscode 에디터 사용으로 인해 발생한 에러로, vscode 의 설정 및 docker-compose 의 버전에 의해 발생한 문제로, vscode 에디터가 아니라면 에러가 발생하지 않기 때문에 일반적인 shell을 이용하면 해결된다.

 모든 문제가 꼭 나의 실수에 의한 것은 아니라는 것이 와닿는 에러였다. 같은 에러가 반복될 일은 크게 없겠지만, 만약 이러한 일이 발생한다면 다른 에디터나 shell 상에서 명령어를 실행해 보는 것도 좋을 것 같다.