#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
перед запуском npmRUN 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 и решил проблему.