Docker PHP: 8.1.1-fpm-alpine3.15 で Npm 権限が拒否される問題が発生する
P粉904191507
P粉904191507 2023-12-31 22:51:38
0
1
427

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 イメージに基づいています:

リーリー


P粉904191507
P粉904191507

全員に返信(1)
P粉709307865

問題を詳しく調べた結果、ノード 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
  • 所有権を 333333 に変更します: chown -R 33333:33333 /var/www/.npm/cache
  • 新しいディレクトリを npm キャッシュ ディレクトリとして設定します: npm config set queue /var/www/.npm/cache --global
いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート