Sharp 사용한 프로젝트 배포시 플랫폼 종속성 문제 해결 (yarn berry)

박재하·2023년 12월 1일
0

목표

  • Sharp 플랫폼 종속성 문제 해결

트러블 슈팅: Sharp 플랫폼 종속성 문제 해결

CI/CD 파이프라인이 모두 잘 완료되었으나, Sharp 패키지의 플랫폼 종속적 문제로 was가 죽어버리는 문제가 발생했다.

학습메모 1을 참고 (공식문서)

npm install --arch=x64 --platform=linux --libc=glibc sharp

하지만 우리는 npm이 아니라 yarn berry.. --platform 옵션이 없어 이에 대응하는 명령을 찾기가 좀 어려웠다.

결국 학습메모 2를 참고해 아래와 같은 명령으로 해결할 수 있다는 것을 확인했다.

SHARP_IGNORE_GLOBAL_LIBVIPS=1 npm_config_arch=x64 npm_config_platform=linux yarn workspace server add sharp
FROM node:20-alpine

WORKDIR /app

ADD . /app

RUN SHARP_IGNORE_GLOBAL_LIBVIPS=1 npm_config_arch=x64 npm_config_platform=linux yarn workspace server add sharp
RUN yarn workspace server build

EXPOSE 3000

ENTRYPOINT ["yarn", "workspace", "server", "start:prod"]

Dockerfile-was 도커파일에 RUN 명령으로 위와 같이 빌드 전 패키지를 플랫폼에 맞게 추가 설치해주는 것으로 해결

스크린샷 2023-11-28 오후 12 02 19 스크린샷 2023-11-28 오후 12 02 40

이제 잘 올라감.

추가 트러블 슈팅

다음 배포때 동일한 설정을 했음에도 같은 문제가 발생했다.

도대체 왜 안되나 이전에 왜 됐나 수많은 트러블 슈팅과정 끝에,
그 일주일 사이에 Sharp 최신 버전이 0.32.6에서 0.33.0으로 업그레이드되어 문제가 생긴 것이라는 것을 알게 되었다.

SHARP_IGNORE_GLOBAL_LIBVIPS=1 npm_config_arch=x64 npm_config_platform=linux yarn workspace server add sharp@0.32.6

버전을 명확히 명시하여 해결.. 조금 허무하지만, 의존성 관리 시
잘 동작할 때를 기준으로 버전 명시를 명확히 하는 것이 중요하다는 것을 배울 수 있었다.

우리의 케이스와 같이 dockerfile에서 배포 시 새로 패키지 설치를 할 땐, pakcage.json에서 관리되지 않아
버전 명시가 안되니 어떤 문제가 발생할 지 모르는 거다.

유명한 오픈 소스라고 다 믿을 수 있는 게 아니다.. 흑흑

학습 메모

Sharp

  1. sharp 설치
  2. yarn에서 paltform 종속적으로 설치
  3. sharp 0.33.0버전 에러
profile
해커 출신 개발자

0개의 댓글