Next.js permission denied to package.json file after docker compose up

142 Views Asked by At

Starting with docker compose up I'm facing an error below:

frontend  | ready - started server on 0.0.0.0:3000, url: http://localhost:3000
frontend  | info  - Loaded env from /app/.env.local
frontend  | [Error: EACCES: permission denied, open '/app/.next/package.json'] {
frontend  |   errno: -13,
frontend  |   code: 'EACCES',
frontend  |   syscall: 'open',
frontend  |   path: '/app/.next/package.json'
frontend  | }
frontend exited with code 1

Can't find any solution to this. I see this error even with 777 permissions for this file.

Dockerfile.dev

ARG BASE=node:16.17.1

# install deps
FROM ${BASE} AS project_name_frontend_dev

USER root
WORKDIR /app
COPY package.json package-lock.json ./
RUN npm install

COPY --chown=node:node . .

EXPOSE 3000

# for dev purpose
CMD ["npm", "run", "dev"]

I've tried to modify file/folder permissions, rebuild container and modify USER & COPY data in Dockerfile.dev.

EDIT:

docker-compose.yml

services:
  front:
    container_name: frontend
    build:
      context: .
      dockerfile: Dockerfile.prod
      args:
        ARG_NEXT_PUBLIC_FRONT_HOST: ${NEXT_PUBLIC_FRONT_HOST}
        ARG_NEXT_PUBLIC_API_HOST: ${NEXT_PUBLIC_API_HOST}
        ARG_NEXT_PUBLIC_FRONT_BASE: ${NEXT_PUBLIC_FRONT_BASE}
        ARG_NEXT_PUBLIC_API_BASE: ${NEXT_PUBLIC_API_BASE}
        ARG_NEXT_PUBLIC_MEDIA_PATH: ${NEXT_PUBLIC_MEDIA_PATH}
        ARG_NEXT_PUBLIC_IMAGES_DOMAIN: ${NEXT_PUBLIC_IMAGES_DOMAIN}
        ARG_NEXT_PUBLIC_GOOGLE_MAPS_KEY: ${NEXT_PUBLIC_GOOGLE_MAPS_KEY}
        ARG_NEXT_PUBLIC_GOOGLE_CLIENT_ID: ${NEXT_PUBLIC_GOOGLE_CLIENT_ID}
        ARG_NEXT_PUBLIC_FB_APP_ID: ${NEXT_PUBLIC_FB_APP_ID}
        ARG_NEXT_PUBLIC_CHAT_HOST: ${ARG_NEXT_PUBLIC_CHAT_HOST}
        ARG_NEXT_PUBLIC_CHAT_BASE: ${ARG_NEXT_PUBLIC_CHAT_BASE}

    networks:
      - project_net_name
    extra_hosts:
      - "api.project_name.local:ip-address"

networks:
  project_net_name:
    external: true

docker-compose.override.yml

services:
  front:
    container_name: frontend
    build:
      context: .
      dockerfile: Dockerfile.dev
      target: project_name_frontend_dev
    networks:
      - project_net_name
    extra_hosts:
      - "api.project_name.local:ip-address"
    environment:
      NODE_TLS_REJECT_UNAUTHORIZED: 0
    volumes:
      - .:/app
      - /app/node_modules
      - /app/.next

0

There are 0 best solutions below