сбой docker-compose up на nodejs-приложение: «Ошибка: не удается найти модуль»

#node.js #docker #docker-compose

#node.js #docker #docker-compose

Вопрос:

Итак, после нескольких часов поиска и чтения различных документов и сообщений в stackoverflow я сам публикую их.

У меня проблемы с созданием моего node.js приложение в docker-образ, получая следующее сообщение об ошибке при попытке docker-compose up:

 Attaching to testbot_bot_1
bot_1  | internal/modules/cjs/loader.js:883
bot_1  |   throw err;
bot_1  |   ^
bot_1  |
bot_1  | Error: Cannot find module '/usr/src/app/bot.js'
bot_1  |     at Function.Module._resolveFilename (internal/modules/cjs/loader.js:880:15)
bot_1  |     at Function.Module._load (internal/modules/cjs/loader.js:725:27)
bot_1  |     at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12)
bot_1  |     at internal/main/run_main_module.js:17:47 {
bot_1  |   code: 'MODULE_NOT_FOUND',
bot_1  |   requireStack: []
bot_1  | }
  

Мой Dockerfile:

 FROM node:14.15.0-alpine3.10

RUN mkdir /usr/src/app/
WORKDIR /usr/src/app/

ADD package.json /usr/src/app/
RUN npm install
ADD . /usr/src/app/

CMD [ "node", "bot.js" ]
  

Мой docker-compose.yml:

 version: "3.8"
services:
  bot:
    build: .
    command: node bot.js
  

Некоторые сообщения заставляют меня поверить, что я должен добавить ссылку на объем, что я и сделал, но это привело к той же ошибке:

 version: "3.8"
services:
  bot:
    build: .
    command: node bot.js
    volumes:
    - .:/usr/src/app
  

Моя файловая структура выглядит следующим образом:

 - commands
  - (some .js files containing modules)
- config
  - (config files in .json-format)
- db
  - (some .js files containing modules)
- res
  - (imagefiles etc.)
- .dockerignore
- bot.js
- docker-compose.yml
- Dockerfile
- package.json
  

My .dockerignore:

 node_modules
npm-debug.log
Dockerfile
.dockerignore
  

Может быть, это связано с параметром .build в моем docker-compose.yml? Я не знаю, понятия не имею…

Я тоже уже пробовал docker-compose down -v и тогда docker-compose up , но, к сожалению, это ничего не изменило.

Также я не связывал какие-либо порты, потому что мое приложение имеет только исходящие соединения, это должно быть нормально, не так ли?

Любая помощь будет высоко оценена! Обычно я сначала пытаюсь Google и смотрю на Stackoverflow, может быть, я просто не искал правильный термин? Заранее большое спасибо за чтение моего поста!

Ответ №1:

Ха, хорошо, я только что понял это.

Оказывается: Вы не можете использовать его с сетевым хранилищем. У меня есть свои проекты на моем NAS, и я подумал, что с помощью docker-compose необходимые файлы будут скопированы в мое локальное хранилище (или где угодно) для его запуска.

По-видимому, этого не произошло.

Но копирование моего проекта на мой локальный компьютер и затем его запуск работали просто отлично … вздох… в любом случае спасибо, что прочитали мой пост!