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

求助解决Docker环境下Vite的EACCES权限拒绝错误

解决Docker中Vite项目的EACCES权限拒绝问题

在Docker环境运行Vite项目时,出现无法创建/app/node_modules/.vite/deps_temp的权限错误,核心原因是npm install以root用户执行,生成的文件及目录归属为root,切换到node用户后无修改权限。以下是具体解决方案:

方案1:以node用户身份安装依赖(推荐)

将用户切换提前到依赖安装环节,确保所有依赖文件都归node用户所有,从根源避免权限问题。修改后的Dockerfile:

FROM node:16

# 创建工作目录并设置权限给node用户
WORKDIR /app
RUN chown -R node:node /app

# 切换到node用户
USER node

COPY package.json ./

# 配置npm,全局安装指定到node用户主目录,避免root权限问题
RUN npm install -g npm@8.19.2 --prefix=/home/node/.npm-global
ENV PATH=/home/node/.npm-global/bin:$PATH
RUN npm -v
RUN npm config set strict-ssl false

RUN npm install --loglevel silly

COPY . .

CMD [ "npm", "run", "dev" ]
  • 先给/app目录设置node用户权限,确保后续所有操作都有权限支撑
  • 全程以node用户执行npm操作,依赖文件自然归属node用户,无需后续权限修正

方案2:修改Vite缓存目录路径

如果不想调整依赖安装的用户逻辑,可以通过环境变量或配置文件,让Vite将缓存目录放到node用户有权限的位置(比如用户主目录),避免在node_modules下创建文件:

  • 通过环境变量修改:调整Dockerfile的CMD部分
    CMD [ "sh", "-c", "VITE_CACHE_DIR=/home/node/.vite npm run dev" ]
    
  • 通过配置文件修改:在项目的vite.config.js中添加配置
    export default defineConfig({
      cacheDir: '/home/node/.vite'
    })
    

方案3:修复现有目录权限

如果坚持用root用户安装依赖,需在安装后重新修正node_modules及项目目录的权限,确保node用户有读写权限:
在RUN npm install和COPY . .后分别添加权限修正命令:

RUN npm install --loglevel silly
# 修正依赖目录权限
RUN chown -R node:node /app/node_modules

COPY . .
# 修正项目文件权限
RUN chown -R node:node /app

注:此方式每次构建都要执行权限修改,效率低于方案1。

内容的提问来源于stack exchange,提问作者Emmanuel Ferro

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 05:30:48