node js. Почитав про процесс работы с нодой под докером, выбрал для себя следующую схему: на локальной машине с федорой 35 поднимаю всю конфигурацию и подтягиваю зависимости, затем архивирую node_modules app.tar.gz, собираю проект через dockerfile:
FROM node:current-alpine3.14
WORKDIR /var/www/scripts
ADD app.tar.gz ./
ADD /scripts/package.json ./
ADD /scripts/server.js ./
EXPOSE 80
RUN npm install
ENTRYPOINT ["node", "server.js"]
Однако контейнер не стартует, лог контейнера выводит что не хватает зависимостей, хотя я всё вроде подтянул. В чём проблема? Логи ошибки:
node:internal/modules/cjs/loader:942
throw err;
^
Error: Cannot find module 'laravel-mix'
Require stack:
- /var/www/scripts/server.js
at Module._resolveFilename (node:internal/modules/cjs/loader:939:15)
at Module._load (node:internal/modules/cjs/loader:780:27)
at Module.require (node:internal/modules/cjs/loader:1005:19)
at require (node:internal/modules/cjs/helpers:102:18)
at Object.<anonymous> (/var/www/scripts/server.js:1:21)
at Module._compile (node:internal/modules/cjs/loader:1105:14)
at Module._extensions..js (node:internal/modules/cjs/loader:1159:10)
at Module.load (node:internal/modules/cjs/loader:981:32)
at Module._load (node:internal/modules/cjs/loader:827:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:77:12) {
code: 'MODULE_NOT_FOUND',
requireStack: [ '/var/www/scripts/server.js' ]
}
Node.js v18.2.0
node:internal/modules/cjs/loader:942
throw err;
^
Error: Cannot find module 'laravel-mix'
Require stack:
- /var/www/scripts/server.js
at Module._resolveFilename (node:internal/modules/cjs/loader:939:15)
at Module._load (node:internal/modules/cjs/loader:780:27)
at Module.require (node:internal/modules/cjs/loader:1005:19)
at require (node:internal/modules/cjs/helpers:102:18)
at Object.<anonymous> (/var/www/scripts/server.js:1:21)
at Module._compile (node:internal/modules/cjs/loader:1105:14)
at Module._extensions..js (node:internal/modules/cjs/loader:1159:10)
at Module.load (node:internal/modules/cjs/loader:981:32)
at Module._load (node:internal/modules/cjs/loader:827:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:77:12) {
code: 'MODULE_NOT_FOUND',
requireStack: [ '/var/www/scripts/server.js' ]
}
Node.js v18.2.0
не то с докерфайлом для ноды. Тебе лучше в чат ноды с этим. Но по кашруту надо делать RUN npm install --production и потом копировать
Благодарю, попробую
какой-то странный процесс, единственный и неповторимый (буквально). А чё б не делать по обычной схеме? https://docs.docker.com/language/nodejs/build-images/
Обсуждают сегодня