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 기반 이미지:
으아악
문제를 조사한 결과 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
chown -R 33333:33333 /var/www/.npm/cache
npm config set cache /var/www/.npm/cache --global