Docker PHP: 8.1.1-fpm-alpine3.15에서 Npm 권한 거부 문제가 발생합니다.
P粉904191507
P粉904191507 2023-12-31 22:51:38
0
1
435

docker-compose를 통해 서비스를 시작하려고 하면 다음 오류 메시지가 나타납니다.

service_frontend | npm 오류! 코드 128

service_frontend | npm 오류! 알 수 없는 Git 오류가 발생했습니다

service_frontend | npm 오류! git --no-replace-objects clone -b feature/WHITELABEL-212-sculpts-während-der-lad https://bjoernme:***@bitbucket.org/faaren/faaren-ui.git /root/ 명령. npm/_cacache/tmp/git-cloneBmjHnf --recurse-submodules --깊이=1

service_frontend | npm 오류! 치명적: '/root/.npm/_cacache/tmp/git-cloneBmjHnf'에 대한 리드 디렉터리를 생성할 수 없습니다: 권한이 거부되었습니다

서비스 프론트엔드|

service_frontend | npm 오류! 이 실행의 전체 로그는 다음에서 확인할 수 있습니다.

service_frontend | npm 오류! /root/.npm/_logs/2022-06-24T13_42_41_376Z-debug.log

service_frontend가 코드 128로 종료되었습니다

docker-compose.yml에서 root, root:root, node:node, 1000:1000, UID:GID로 시작하는 사용자 속성으로 여러 집합을 시도했습니다(변수는 내 로컬 사용자 ID와 그룹 ID를 주입하도록 설정되었습니다.

내 docker-compose.yml의 관련 부분:

으아악

이것은 내 로컬 도커 이미지입니다:

으아악

이것은 내부 기본 이미지입니다(php:8.1.1-fpm-alpine3.15 기반 이미지:

으아악


P粉904191507
P粉904191507

모든 응답(1)
P粉709307865

문제를 조사한 결과 Node 16.15.1에서 npm 작업의 모든 명령이 현재 작업 디렉터리를 소유한 사용자로 실행된다는 사실을 발견했습니다. 따라서 루트로 실행하는 경우에도 npm i 时,git clone 하위 명령은 현재 작업 디렉터리가 속한 사용자로 실행됩니다.

제 경우에는 /var/www/html/ 属于 user:group 33333:33333。 npm i 루트로 실행 중이었습니다. 일부 git clone 명령의 경우 이러한 명령은 사용자 33333으로 실행됩니다. 따라서 사용자 33333은 /root/.npm 아래의 기본 캐시된 npm 폴더에 액세스할 수 없습니다. 해당 폴더는 사용자 root에 속하기 때문입니다.

다음 방법으로 문제를 해결했습니다.

  • 루트 디렉터리 외부에 캐시 디렉터리를 만듭니다mkdir /var/www/.npm/cache
  • 소유권을 333333으로 변경: chown -R 33333:33333 /var/www/.npm/cache
  • 새 디렉터리를 npm 캐시 디렉터리로 설정합니다. npm config set cache /var/www/.npm/cache --global
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿