TL;DR
Quartz 원본 레포에서 해당 pull request 참고하자…
문제
- Docker로 Quartz(Node.js) 프로젝트를 빌드·실행할 때
Error: Cannot find module '@napi-rs/simple-git-linux-arm64-gnu'
또는 의존성 관련 모듈을 찾을 수 없다는 에러가 발생하고docker run
시 이미지 인자가 비어 있다는 에러도 동반적으로 발생 - Node 22 버전 업그레이드 되면서 cloudflare에서 배포 문제가 생겼는데 이걸 해결하려고 package.json을 만지고 해서 문제가 발생한 듯…
원인
- package-lock.json 삭제
- Cloudflare 배포 문제로 node.js 버전을 바꾸며
package-lock.json
을 삭제했음 - 이후 의존성 트리가 달라짐 (하위 모듈 버전이 달라질 수 있음)
- Cloudflare 배포 문제로 node.js 버전을 바꾸며
- node_modules 폴더의 불일치
- lock 파일 없이 의존성 설치(npm install)시, 환경(OS, Node/npm 버전, 패키지 최신 상태)에 따라 실제 설치되는 패키지 트리와 바이너리가 달라질 수 있음
- 특히 M1/M2 맥북(arm64)에서 빌드하면 플랫폼별 네이티브 모듈 충돌이 자주 발생
- 빌드/런 명령 구조의 문제
- 빌드가 실패하면
docker run $(docker build -q .)
에서 run 명령어에 이미지 ID가 전달되지 않아 “이미지 인자가 없음” 에러가 발생
- 빌드가 실패하면
해결
- node_modules와 package-lock.json 모두 삭제
rm -rf node_modules package-lock.json
- 의존성 재설치
npm install
- 이 과정에서 새로운 package-lock.json이 생성됨.
- Docker 이미지 빌드 및 실행
docker build -t my-quartz . docker run --rm -it -p 8080:8080 -p 3001:3001 -v ./content:/usr/src/app/content my-quartz