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

Docker部署于DigitalOcean的Node.js应用上传图片遇EACCES权限错误求助

解决Node.js Docker部署在DigitalOcean的上传目录权限问题

错误原因

Error: EACCES: permission denied, open 'uploads /9d607de9b2483a9e92120979cfca666f' 是因为容器内运行Node进程的用户没有uploads目录的读写权限,另外路径中uploads后存在空格,大概率是代码路径拼接错误导致的无效路径。

解决方案

1. 修正Dockerfile的权限配置

构建镜像时提前创建uploads目录,将权限赋予Node进程默认使用的node用户(多数官方Node镜像自带该用户):

FROM node:18-alpine

WORKDIR /app

COPY package*.json ./
RUN npm install

# 创建uploads目录并修改归属为node用户
RUN mkdir -p uploads && chown -R node:node uploads

# 切换到node用户运行应用,规避root权限风险
USER node

COPY . .

CMD ["node", "app.js"]

2. 检查卷挂载权限(若使用外部卷)

如果uploads目录挂载到了DigitalOcean块存储或宿主机目录,需确保宿主机侧目录权限匹配容器内node用户的UID(通常为1000):

# 在DigitalOcean宿主机执行
sudo mkdir -p /your/host/uploads/path
sudo chown -R 1000:1000 /your/host/uploads/path

3. 修复代码路径拼接错误

错误路径里uploads后有空格,检查应用代码中生成上传路径的逻辑:

  • 错误写法:path.join('uploads ', filename)
  • 正确写法:path.join('uploads', filename)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 05:16:38