我今天刚开始使用docker,但由于权限问题而遇到了阻碍。我不知道应该输入什么来切换权限,我认为这可能与chown有关。虽然stackoverflow上有其他的问题,但它们要么不是特定于Docker的,要么没有选定答案来回答这个问题。
下面是错误信息:
我的 Dockerfile.dev 看起来像这样:
下面是错误信息:
client_1 |
client_1 | > client@0.1.0 start
client_1 | > react-scripts start
client_1 |
client_1 | ℹ 「wds」: Project is running at http://172.19.0.2/
client_1 | ℹ 「wds」: webpack output is served from
client_1 | ℹ 「wds」: Content not from webpack is served from /app/public
client_1 | ℹ 「wds」: 404s will fallback to /
client_1 | Starting the development server...
client_1 |
client_1 | Failed to compile.
client_1 |
client_1 | EACCES: permission denied, mkdir '/app/node_modules/.cache'
我的docker-compose.yml文件如下:
version: "3"
services:
client:
stdin_open: true
build:
context: .
dockerfile: Dockerfile.dev
ports:
- "3000:3000"
volumes:
- "/app/node_modules"
- "./:/app"
我的 Dockerfile.dev 看起来像这样:
FROM node:alpine
RUN apk update && apk add git && apk add python make g++
WORKDIR /app
COPY package.json /app
# To Fix Permissions for Packages
RUN npm config set unsafe-perm true
RUN npm install --force
COPY . /app
CMD ["npm", "run", "start"]
RUN chown -R node /app/node_modules
替代。这可能需要更长的时间,但不会太多。然后您可以删除RUN mkdir -p /app/node_modules/.cache
这行。 - André Guimarães AragonRUN chown -R node:node /app/node_modules
而不是RUN chown -R node /app/node_modules
和RUN chmod -R 744 /app/node_modules
如果这样做不起作用,那么您的容器可能没有以用户“node”运行。在这种情况下,您可以尝试RUN chmod -R 777 /app/node_modules
仅供您的容器启动,然后尝试找出正在使用哪个用户来运行容器,然后给予该用户写入和执行权限。让我知道这是否有效! - André Guimarães Aragonnpm install
之前运行RUN mkdir -p /app/node_modules
,然后再运行RUN chown node:node /app/node_modules
,那么它的效果同样好,但速度更快。 - thadk