Docker PHP: Npm kebenaran dinafikan masalah berlaku dalam 8.1.1-fpm-alpine3.15
P粉904191507
P粉904191507 2023-12-31 22:51:38
0
1
440

Apabila saya cuba memulakan perkhidmatan saya melalui docker-compose, saya mendapat mesej ralat berikut:

service_frontend |. Kod 128

service_frontend |. Ralat git yang tidak diketahui berlaku

service_frontend |. Perintah 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 |. MAUT: Tidak dapat mencipta direktori petunjuk untuk '/root/.npm/_cacache/tmp/git-cloneBmjHnf': Kebenaran ditolak

Perkhidmatan bahagian hadapan|

service_frontend |. Log penuh larian ini boleh didapati di:

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

service_frontend keluar dengan kod 128

Saya mencuba berbilang buruj sebagai sifat pengguna dalam docker-compose.yml, bermula dengan root, root:root, node:node, 1000:1000, UID:GID (pembolehubah ditetapkan untuk menyuntik ID pengguna dan ID kumpulan tempatan saya.

Bahagian yang berkaitan dari docker-compose.yml saya:

service_frontend:
    build:
      context: /workspace/faaren-services/frontend
      dockerfile: Dockerfile
      args:
        dev: "true"
    command: bash -c "npm install --save-dev chokidar@3.5.2 && composer install && php artisan octane:start --server=swoole --host=0.0.0.0 --port=8080 --watch"
    user: root
    volumes:
      - /workspace/faaren-services/frontend:/var/www/html
      - ./docker-conf/supervisor/supervisord.conf:/etc/supervisor/conf.d/supervisord.conf
      - ./docker-conf/php/debugger.ini:/usr/local/etc/php/conf.d/debugger.ini

Ini ialah imej buruh pelabuhan tempatan saya:

FROM eu.gcr.io/faaren-prod/frontend-base-image:latest
COPY . /var/www/html
ARG dev=false
RUN if [ ${dev} = "true" ] ; then 
        set -ex 
        && apk add --no-cache npm 
        && mkdir -p /.npm 
        && mkdir -p /root/.npm/_cacache/tmp/ 
        && chmod 777 -R "/root/.npm/_cacache/tmp/" 
        && chmod 777 -R "/.npm" 
    fi ;

Ini ialah imej asas dalaman kami (berdasarkan php:8.1.1-fpm-alpine3.15 Imej:

FROM php:8.1.1-fpm-alpine3.15
WORKDIR /var/www/html/

RUN apk add --no-cache --update git 
    npm 

RUN mkdir /.npm 
RUN mkdir /.cache
RUN chown -R 1000:1001 "/.npm"
RUN chown -R 1000:1001 "/.cache"


P粉904191507
P粉904191507

membalas semua(1)
P粉709307865

Selepas menggali isu ini, saya mendapati bahawa dalam Node 16.15.1, semua arahan dalam tugas npm dijalankan sebagai pengguna yang memiliki direktori kerja semasa. Jadi walaupun semasa menjalankan sebagai root subperintah npm i 时,git clone akan dijalankan sebagai pengguna yang dimiliki oleh direktori kerja semasa.

Dalam kes saya, /var/www/html/ 属于 user:group 33333:33333。 npm i berjalan sebagai root. Untuk beberapa arahan klon git, arahan ini dijalankan sebagai pengguna 33333. Oleh itu, pengguna 33333 tidak dibenarkan mengakses folder npm cache lalai di bawah /root/.npm kerana folder tersebut adalah milik root pengguna.

Saya menyelesaikan masalah dengan:

  • Buat direktori cache di luar direktori akarmkdir /var/www/.npm/cache
  • Tukar pemilikan kepada 333333: chown -R 33333:33333 /var/www/.npm/cache
  • Tetapkan direktori baharu sebagai direktori cache npm: npm config set cache /var/www/.npm/cache --global
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan