..

err pnpm no lockfile

개요

CI/CD 파이프라인에서 Dockerfile이 pnpm install을 사용할 때 다음과 같은 오류가 발생할 수 있습니다:

Step 5/8 : RUN pnpm install --frozen-lockfile
 ---> Running in 30f66c05418a
 ERR_PNPM_NO_LOCKFILE  Cannot install with "frozen-lockfile" because pnpm-lock.yaml is absent

문제 원인

이 오류는 일반적으로 CI 환경의 pnpm 버전과 로컬 개발 환경의 pnpm 버전이 다를 때 발생합니다. 파이프라인 로그에서 다음과 같은 경고를 확인할 수 있습니다:

Ignoring not compatible lockfile at pnpm-lock.yaml

해결 방법

GitHub Actions에서 pnpm을 사용하는 경우, 다음과 같이 설정을 업데이트합니다.

  1. pnpm/action-setup 액션을 최신 버전으로 업데이트
  2. pnpm/action-setup 액션에서 version 옵션을 사용하여 로컬 환경에서 빌드 성공시에 사용한 pnpm 버전을 명시적으로 지정

Actions Workflow를 사용하는 경우:

# .github/workflows/your-workflow.yml
jobs:
  your-job-name:
    # ... other steps ...
    steps:
      - uses: pnpm/action-setup@v4
        with:
          version: 9.5.0

Dockerfile에서 pnpm을 사용하는 경우:

# your-project/Dockerfile
FROM node:20

# ... omiitted for brevity ...

RUN npm install -g pnpm@9.5.0
RUN pnpm install --frozen-lockfile

--frozen-lockfile 옵션은 패키지 매니저가 lockfile을 읽기 전용으로 처리하도록 하는 옵션입니다.

로컬 pnpm 버전은 다음 명령어로 확인할 수 있습니다:

which pnpm && pnpm --version

관련자료