Docker - “错误:EACCES:权限被拒绝,mkdir '/project/node_modules/.cache/@babel'" [英] Docker - "Error: EACCES: permission denied, mkdir '/project/node_modules/.cache/@babel'"
问题描述
运行 yarn docker-build
工作正常,但是当 yarn docker-up
或 yarn docker-dev
时会弹出一个错误 RUN yarn
被调用.Nginx 启动正常,但 yarn 无法进入 Projects 目录中的 mkdir.
Running yarn docker-build
works fine but when yarn docker-up
or yarn docker-dev
an error pops up when RUN yarn
is called. Nginx starts up fine but yarn fails into mkdir in the Projects directory.
package.json
package.json
...
"docker-build": "docker-compose build",
"docker-dev": "cross-env NGINX_HOST=localhost NGINX_PORT=3000 PORT=3000 docker-compose -f docker-compose.yml -f docker-compose.dev.yml up --no-deps",
"docker-up": "cross-env NGINX_HOST=localhost NGINX_PORT=80 PORT=8080 docker-compose -f docker-compose.yml -f docker-compose.prod.yml up --no-deps -d",
"docker-down": "docker-compose down"
...
Dockerfile
FROM mhart/alpine-node:8
# Install required dependencies (Alpine Linux packages)
RUN apk update &&
apk add --no-cache
sudo
g++
gcc
git
libev-dev
libevent-dev
libuv-dev
make
openssl-dev
perl
python
# Add user and make it sudoer
ARG uid=1000
ARG user=username
RUN set -x ;
addgroup -g $uid -S $user ;
adduser -u $uid -D -S -G $user $user
&& exit 0 ; exit 1
RUN echo $user' ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
# Install (global) Yarn packages/dependencies
RUN yarn global add node-gyp
RUN git clone --recursive https://github.com/sass/node-sass.git
&& cd node-sass
&& yarn
&& node scripts/build -f
# Make project directory with permissions
RUN mkdir /project
# Switch to project directory
WORKDIR /project
# Copy required stuff
COPY . .
# Give owner rights to the current user
RUN chown -Rh $user:$user /project
# Install (local) Yarn packages and build
RUN yarn
USER $user
错误
app_1 | [2] Error: EACCES: permission denied, mkdir '/project/node_modules/.cache/@babel'
app_1 | [2] at Object.fs.mkdirSync (fs.js:885:18)
app_1 | [2] at sync (/project/node_modules/mkdirp/index.js:71:13)
app_1 | [2] at sync (/project/node_modules/mkdirp/index.js:77:24)
app_1 | [2] at save (/project/node_modules/@babel/register/lib/cache.js:50:20)
app_1 | [2] at _combinedTickCallback (internal/process/next_tick.js:132:7)
app_1 | [2] at process._tickCallback (internal/process/next_tick.js:181:9)
app_1 | [2] at Function.Module.runMain (module.js:696:11)
app_1 | [2] at startup (bootstrap_node.js:204:16)
app_1 | [2] at bootstrap_node.js:625:3
我的 repo 可以在这里找到 https://github.com/cozy-nyc/cozy-纽约
My repo can be found here at https://github.com/cozy-nyc/cozy-nyc
推荐答案
我在使用 npm 时遇到了同样的问题.我使用以下方法修复它:
I had the same problem with npm. I fixed it using:
RUN npm config set unsafe-perm true
另一种方法是在安装命令中指定它:
The other way is to specify it in your install command:
npm install -g --unsafe-perm thePackage
您可以在此处找到相关文档:https://docs.npmjs.com/misc/config#unsafe-perm
You can find the documentation for it here: https://docs.npmjs.com/misc/config#unsafe-perm
这篇关于Docker - “错误:EACCES:权限被拒绝,mkdir '/project/node_modules/.cache/@babel'"的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!