You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在WSL2 Ubuntu中用Docker创建React应用遇权限拒绝问题求助

解决WSL2 Docker运行create-react-app权限拒绝问题

方案1:使用npx直接运行(推荐)

修改执行脚本,让npm调用npx在容器内部缓存目录运行create-react-app,避开挂载目录的权限限制:

docker-compose -f utility.docker-compose.yml run --rm npm exec -- npx create-react-app@latest my-app

原理:npx会将create-react-app安装到容器的全局npm缓存目录(而非挂载的/app目录),执行时无需访问挂载目录的可执行权限,生成的my-app项目仍会存放在挂载目录下,满足实时更新需求。

方案2:全局安装create-react-app到镜像

修改utility.Dockerfile,预安装create-react-app到镜像:

FROM node:18-alpine

WORKDIR /app

RUN npm install -g create-react-app

ENTRYPOINT [ "create-react-app" ]

可选更新utility.docker-compose.yml简化命令:

version: '3.7'
services:
  create-react-app:
    build:
      context: .
      dockerfile: utility.Dockerfile
    volumes:
      - ./:/app
    stdin_open: true
    tty: true

执行脚本改为:

docker-compose -f utility.docker-compose.yml run --rm create-react-app my-app

原理:将create-react-app预安装到镜像中,执行时直接调用全局命令,无需在挂载目录生成可执行文件,彻底避开权限问题。

方案3:调整WSL2文件系统权限

若上述方案无效,可修改WSL2的挂载权限配置:

  1. 在WSL2的Ubuntu中编辑/etc/wsl.conf(不存在则创建):
[automount]
options = "metadata,umask=0022,fmask=0022"
  1. 退出WSL,在Windows命令行执行:
wsl --shutdown
  1. 重新启动WSL后再次运行脚本。
    原理:调整WSL挂载目录的默认权限,让容器内用户可正常执行挂载目录下的可执行文件。

内容的提问来源于stack exchange,提问作者Julio Sandoval

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 18:10:30