#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 необходимые файлы будут скопированы в мое локальное хранилище (или где угодно) для его запуска.
По-видимому, этого не произошло.
Но копирование моего проекта на мой локальный компьютер и затем его запуск работали просто отлично … вздох… в любом случае спасибо, что прочитали мой пост!