I’m trying to deploy my app on VPS :
When I execute the command
docker compose -f docker-compose.production.yml --env-file .env.production up --build
I have an error message :
server-1 | > [email protected] start:prod
server-1 | > node build/index.js
server-1 |
server-1 | node:internal/modules/cjs/loader:1146
server-1 | throw err;
server-1 | ^
server-1 |
server-1 | Error: Cannot find module '/app/build/index.js'
server-1 | at Module._resolveFilename (node:internal/modules/cjs/loader:1143:15)
server-1 | at Module._load (node:internal/modules/cjs/loader:984:27)
server-1 | at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:135:12)
server-1 | at node:internal/main/run_main_module:28:49 {
server-1 | code: 'MODULE_NOT_FOUND',
server-1 | requireStack: []
server-1 | }
server-1 |
server-1 | Node.js v20.12.2
It tries to start from app/build/index.js
but when it builds the app I specified app/build/src/index.js
.
Here is my Dockerfile.production :
FROM node:lts-alpine
RUN apk --no-cache add curl
RUN apk add make g++ python3 git
RUN npm i -g node-pre-gyp
RUN mkdir /app
WORKDIR /app
COPY package*.json ./
RUN npm i -g
COPY .env ./.env
COPY src ./src
COPY tsconfig.json ./
RUN ["npm", "run", "build"]
CMD ["npm","run","start:prod"]
And this is my scrip in package.json :
"scripts": {
"start": "ts-node-dev src/index.ts",
"build": "tsc",
"start:prod": "node build/src/index.js",
"seed": "ts-node-dev seed.ts"
},
When I build locally this is the result :
enter image description here
Thanks a lot if anyone has a clue or can help.
Docker can’t file the index.js file in the build file. Try to change the script in package.json to :
"start:prod": "node build/index.js",
but same issue.
Grisch is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.