Permission denied, open '/app/.next/package.json'

Hello,
The compose file is as follows:

services:
  portal:
    container_name: portal
    build:
      context: /home/docker/portal/
      dockerfile: Dockerfile
    environment:
      - NODE_ENV=development
    user: "${USER_ID:-1000}:${GROUP_ID:-1000}"
    volumes:
      - /home/docker/portal:/app
      - /app/node_modules
      - /app/.next
    ports:
      - "3000:3000"

And Dockerfile is as follows:

FROM node:23-alpine
RUN npm install -g npm@latest
RUN mkdir -p /app && chown -R node:node /app
WORKDIR /app
USER node
COPY --chown=node:node package*.json ./
RUN npm install --legacy-peer-deps
COPY --chown=node:node . .
ENV NODE_ENV=development
ENV CHOKIDAR_USEPOLLING=true
EXPOSE 3000
CMD ["npm", "run", "dev"]

I got the following error:

Error: EACCES: permission denied, open '/app/.next/package.json'
    at async open (node:internal/fs/promises:634:25)
    at async Object.writeFile (node:internal/fs/promises:1208:14)
    at async HotReloaderWebpack.start (/app/node_modules/next/dist/server/dev/ho
t-reloader-webpack.js:620:9)
    at async startWatcher (/app/node_modules/next/dist/server/lib/router-utils/s
etup-dev-bundler.js:156:5)
    at async setupDevBundler (/app/node_modules/next/dist/server/lib/router-util
s/setup-dev-bundler.js:775:20)
    at async Span.traceAsyncFn (/app/node_modules/next/dist/trace/trace.js:154:2
0)
    at async initialize (/app/node_modules/next/dist/server/lib/router-server.js
:80:30)
    at async Server.<anonymous> (/app/node_modules/next/dist/server/lib/start-se
rver.js:249:36) {
  errno: -13,
  code: 'EACCES',
  syscall: 'open',
  path: '/app/.next/package.json'
}

Is this a bug? If not, how do I fix this problem?

Thank you.

Hello,
Any idea?

Thank you.

Hello,
Solved by:

FROM node:23-alpine
# Install latest npm
RUN npm install -g npm@latest
# Create app directory and set proper permissions
RUN mkdir -p /app && chown -R node:node /app
WORKDIR /app
# Copy package files and install dependencies
COPY --chown=node:node package*.json ./
RUN npm install --legacy-peer-deps
# Copy app files
COPY --chown=node:node . .
# Ensure the .next directory exists and has proper permissions
RUN mkdir -p .next && chown -R node:node .next
USER node
ENV NODE_ENV=development
ENV CHOKIDAR_USEPOLLING=true
EXPOSE 3000
CMD ["npm", "run", "dev"]