Hello,
The permissions of the directory where the program sources are located are as follows:
# ls -la
drwxr-xr-x 18 jason jason 4096 May 12 23:05 portal
The compose and Dockerfile files are as follows:
services:
portal:
container_name: portal
build:
context: /home/jason/portal/
dockerfile: Dockerfile
environment:
- NODE_ENV=development
- CHOKIDAR_USEPOLLING="true"
- USER_ID=${USER_ID:-999}
- GROUP_ID=${GROUP_ID:-995}
user: "${USER_ID:-999}:${GROUP_ID:-995}"
volumes:
- /home/docki/dev/portal-view:/app
- /app/node_modules
- /app/.next
ports:
- "127.0.0.1:3000:3000"
deploy:
resources:
limits:
cpus: '4.0'
memory: 4G
And:
FROM node:23-alpine
# Create app directory with proper permissions
RUN mkdir -p /home/node/app/node_modules && \
chown -R node:node /home/node/app
WORKDIR /home/node/app
# Copy package files first
COPY --chown=node:node package*.json ./
# Update npm and install dependencies
USER root
RUN npm install -g npm@latest
USER node
RUN npm install --legacy-peer-deps
# Copy app files (excluding problematic paths)
COPY --chown=node:node . .
EXPOSE 3000
CMD ["npm", "run", "dev"]
After running the container I got the following error:
✓ Starting...
Error: EISDIR: illegal operation on a directory, open '/app/next-env.d.ts'
at async open (node:internal/fs/promises:634:25)
at async Object.writeFile (node:internal/fs/promises:1208:14)
at async writeAppTypeDeclarations (/app/node_modules/next/dist/lib/typescript/writeAppTypeDeclarations.js:59:5)
at async verifyTypeScriptSetup (/app/node_modules/next/dist/lib/verify-typescript-setup.js:124:9)
at async verifyTypeScript (/app/node_modules/next/dist/server/lib/router-utils/setup-dev-bundler.js:112:26)
at async startWatcher (/app/node_modules/next/dist/server/lib/router-utils/setup-dev-bundler.js:139:29)
at async setupDevBundler (/app/node_modules/next/dist/server/lib/router-utils/setup-dev-bundler.js:775:20)
at async Span.traceAsyncFn (/app/node_modules/next/dist/trace/trace.js:154:20)
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-server.js:249:36) {
errno: -21,
code: 'EISDIR',
syscall: 'open',
path: '/app/next-env.d.ts'
}
But inside the container, the file permissions are as follows:
/app # ls -la
total 748
drwxr-xr-x 1 node node 4096 May 12 17:32 .
drwxr-xr-x 1 root root 4096 May 13 05:29 ..
-rw-r--r-- 1 node node 127 May 12 15:27 .dockerignore
-rw-r--r-- 1 node node 385 May 11 09:35 .gitignore
drwxr-xr-x 1 node node 4096 May 12 17:32 .next
-rw-r--r-- 1 node node 69 May 11 09:35 .prettierrc
-rw-r--r-- 1 node node 1954 May 11 09:35 App.tsx
drwxr-xr-x 1 node node 4096 May 11 09:35 app
drwxr-xr-x 1 node node 4096 May 11 09:35 components
drwxr-xr-x 1 node node 4096 May 11 09:35 contracts
drwxr-xr-x 1 node node 4096 May 11 09:35 exceptions
drwxr-xr-x 1 node node 4096 May 11 09:35 forms
drwxr-xr-x 1 node node 4096 May 12 05:39 helpers
drwxr-xr-x 1 node node 4096 May 11 09:35 hooks
-rw-r--r-- 1 node node 1813 May 11 09:35 i18n.ts
-rw-r--r-- 1 node node 198 May 11 09:35 next.config.js
-rw-r--r-- 1 node node 427 May 11 09:35 ni18n.config.ts.js
drwxr-xr-x 1 node node 24576 May 12 17:32 node_modules
-rw-r--r-- 1 node node 581282 May 11 09:35 package-lock.json
-rw-r--r-- 1 node node 3511 May 11 09:35 package.json
-rw-r--r-- 1 node node 95 May 11 09:35 postcss.config.js
drwxr-xr-x 1 node node 4096 May 11 09:35 public
drwxr-xr-x 1 node node 4096 May 11 09:35 services
drwxr-xr-x 1 node node 4096 May 11 09:35 store
drwxr-xr-x 1 node node 4096 May 11 09:35 styles
-rw-r--r-- 1 node node 3643 May 11 09:35 tailwind.config.js
-rw-r--r-- 1 node node 624 May 11 09:35 theme.config.tsx
-rw-r--r-- 1 node node 790 May 11 09:35 tsconfig.json
Can’t we say that this problem is unfounded?
Thank you.