Ошибка разрешения Laravel Mix и alpine 3.14

#php #docker #npm

Вопрос:

Я пытаюсь обновить свой образ докера с php:7.4-fpm-alpine3.13 до php:7.4-fpm-alpine3.14, в котором произошла эта проблема.

Error: EACCES: permission denied, open '/var/www/app/public/mix-manifest.json'

Команда разработчиков в настоящее время использует Laravel Mix для создания статических файлов.

Бревна:

 /var/www/app # npm run development  gt; development gt; mix  glob error [Error: EACCES: permission denied, scandir '/root/.npm/_logs'] {  errno: -13,  code: 'EACCES',  syscall: 'scandir',  path: '/root/.npm/_logs' } Browserslist: caniuse-lite is outdated. Please run: npx browserslist@latest --update-db  Why you should do it regularly: https://github.com/browserslist/browserslist#browsers-data-updating  ● Mix █████████████████████████ sealing (92%) asset processing SourceMapDevToolPlugin  attached SourceMap  internal/fs/utils.js:332  throw err;  ^  Error: EACCES: permission denied, open '/var/www/app/public/mix-manifest.json'  at Object.openSync (fs.js:497:3)  at Object.writeFileSync (fs.js:1528:35)  at File.write (/var/www/app/node_modules/laravel-mix/src/File.js:211:12)  at Manifest.refresh (/var/www/app/node_modules/laravel-mix/src/Manifest.js:75:50)  at /var/www/app/node_modules/laravel-mix/src/webpackPlugins/ManifestPlugin.js:21:48  at Hook.eval [as callAsync] (eval at create (/var/www/app/node_modules/tapable/lib/HookCodeFactory.js:33:10), lt;anonymousgt;:12:1)  at Hook.CALL_ASYNC_DELEGATE [as _callAsync] (/var/www/app/node_modules/tapable/lib/Hook.js:18:14)  at Compiler.emitAssets (/var/www/app/node_modules/webpack/lib/Compiler.js:850:19)  at /var/www/app/node_modules/webpack/lib/Compiler.js:438:10  at processTicksAndRejections (internal/process/task_queues.js:77:11) {  errno: -13,  syscall: 'open',  code: 'EACCES',  path: '/var/www/app/public/mix-manifest.json' }   

Мой док-файл:

 FROM php:7.4-fpm-alpine3.14  ARG COMPONENT ARG APP_ENV ARG SRC_DIR  # Update amp; add nginx RUN apk update amp;amp;   apk add nginx amp;amp; mkdir -p /var/cache/nginx/ amp;amp;   chmod 777 -R /var/lib/nginx/tmp COPY ./docker/nginx/nginx.conf /etc/nginx/nginx.conf COPY ./docker/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf  # Give permission to nginx folder RUN chown -R www-data:www-data /var/lib/nginx RUN chmod 755 /var/lib/nginx/tmp/  # Add php.ini COPY ./docker/${COMPONENT}/php.ini /etc/php7/php.ini  # Add entrypoint COPY ./docker/${COMPONENT}/entrypoint.sh /usr/local/bin/entrypoint.sh RUN chmod  x /usr/local/bin/entrypoint.sh  # Install nodejs, npm RUN apk add --no-cache nodejs npm  # Create source code directory within container RUN mkdir -p /var/www/app RUN chown -R www-data:www-data /var/www/app  # Add source code from local to container WORKDIR /var/www/app COPY ${SRC_DIR} .  # Grant permission for folders amp; install packages RUN chmod 777 -R bootstrap storage amp;amp;   cp ./env/.env.${APP_ENV} .env amp;amp;   composer install  RUN rm -rf .env RUN npm install amp;amp; npm run ${APP_ENV} amp;amp; rm -rf node_modules  # Expose webserver ports EXPOSE 80 443  # Command-line to run supervisord CMD [ "/bin/bash", "/usr/local/bin/entrypoint.sh" ]  

Что я пробовал:

  • rm -rf ./node_modules и установите снова
  • npm config set unsafe-perm true перед запуском npm
  • RUN npm config set user 0 amp;amp; npm config set unsafe-perm true перед установкой npm

Любая помощь будет признательна!

Комментарии:

1. Вы решили эту проблему? Сегодня я столкнулся с той же проблемой.

Ответ №1:

Для тех, кто также может столкнуться с этой проблемой, я переустановил nodejs в своей среде CentOS 7 и решил проблему. Версия nodejs также такая же, как и предыдущая (v14.18.1).

Комментарии:

1. О, я понимаю, так что это может быть совместимость версии nodejs с alpine 3.14. Спасибо вам за ваше предложение. Я попробую и обновлю результат

2. Я думаю, что это проблема с разрешениями, связанная с nodejs. Я переустановил и использовал ту же версию nodejs и решил проблему.