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 -- Depth=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
で終了しました
root、root:root、node:node、1000:1000、UID:GID で始まる docker-compose.yml のユーザー プロパティとして複数のコンスタレーションを試しました (変数はローカル ユーザー ID とグループ ID を挿入するように設定されました) .
docker-compose.yml の関連部分:
リーリーこれは私のローカル Docker イメージです:
リーリーこれは内部ベース イメージです (php:8.1.1-fpm-alpine3.15 イメージに基づいています:
リーリー
問題を詳しく調べた結果、ノード 16.15.1 では、npm タスクのすべてのコマンドが現在の作業ディレクトリを所有するユーザーとして実行されることがわかりました。したがって、
npm i
を root サブコマンドとして実行する場合でも、git clone
は現在の作業ディレクトリが属するユーザーとして実行されます。私の場合、
/var/www/html/
はユーザー:グループ 33333:33333 に属します。npm i
root として実行します。一部の git clone コマンドの場合、これらのコマンドはユーザー 33333 として実行されます。したがって、ユーザー 33333 は、/root/.npm の下にあるデフォルトのキャッシュされた npm フォルダーへのアクセスは許可されません。これは、フォルダーがユーザー root に属しているためです。私は次の方法で問題を解決しました:
mkdir /var/www/.npm/cache
chown -R 33333:33333 /var/www/.npm/cache
npm config set queue /var/www/.npm/cache --global