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

Next.js应用Docker Compose部署遇Permission Denied错误求助

解决Docker Compose运行Next.js 14时的EACCES权限错误

问题根源

你的问题核心是宿主机挂载目录的权限与容器内nextjs用户不匹配:

  • Dockerfile的runner阶段创建了UID/GID为1001的nextjs用户,并切换到该用户运行应用
  • 通过docker-compose.yml的volumes: - .:/app将宿主机项目目录挂载到容器/app后,宿主机上的.next目录由宿主机用户创建,容器内的nextjs用户无读写权限,导致Next.js开发模式下无法修改build-manifest.json文件
  • 你的Dockerfile为生产构建设计,但实际用npm run dev运行开发环境,权限配置与运行模式不兼容

解决方法

方法一:修改Docker Compose适配开发环境

调整挂载策略,只挂载源码文件,避免覆盖容器内的.next和node_modules,同时改用builder阶段构建镜像:

version: '3.8'
services:
  web:
    build:
      context: ./
      target: builder
    volumes:
      # 仅挂载需要热更新的源码目录和配置文件
      - ./pages:/app/pages
      - ./public:/app/public
      - ./package.json:/app/package.json
      - ./package-lock.json:/app/package-lock.json
    command: npm run dev
    ports:
      - "3000:3000"
    environment:
      NODE_ENV: development

builder阶段默认使用root用户运行,不会触发权限限制,适合开发场景。

方法二:让容器用户与宿主机用户UID匹配

  1. 先获取宿主机当前用户的UID和GID:
id -u # 输出当前用户UID
id -g # 输出当前用户GID
  1. 修改Dockerfile的runner阶段,创建与宿主机UID/GID一致的用户(示例中替换为1000,需根据实际输出修改):
FROM node:18-alpine AS deps
RUN apk add --no-cache libc6-compat
WORKDIR /app

COPY package.json package-lock.json ./
RUN  npm install --production

FROM node:18-alpine AS builder
WORKDIR /app
COPY --from=deps /app/node_modules ./node_modules
COPY . .

ENV NEXT_TELEMETRY_DISABLED 1

RUN npm run build

FROM node:18-alpine AS runner
WORKDIR /app

ENV NODE_ENV production
ENV NEXT_TELEMETRY_DISABLED 1

# 替换为宿主机的UID和GID
RUN addgroup --system --gid 1000 nodejs
RUN adduser --system --uid 1000 nextjs

COPY --from=builder --chown=nextjs:nodejs /app/.next ./.next
COPY --from=builder /app/node_modules ./node_modules
COPY --from=builder /app/package.json ./package.json

USER nextjs

EXPOSE 3000

ENV PORT 3000

CMD ["npm", "start"]
  1. 重新构建镜像并启动服务:
docker compose build
docker compose up

方法三:临时修改宿主机目录权限

直接给宿主机的.next目录添加全局读写权限(适合临时测试):

sudo chmod -R 777 .next

或修改目录所有者为容器内nextjs用户的UID:

sudo chown -R 1001:1001 .next

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 23:25:58