Ошибка Docker Node.js: Не Удается Найти Модуль

  • Автор темы UYY96
  • Обновлено
  • 20, Oct 2024
  • #1

Когда я запускаю докеризованное тестовое приложение Node.js с помощью

 
 
 
 
 
 
 version: '3'
services:

web:

build: .

command: npm start

volumes:

- ./src:/usr/app/

- /usr/app/node_modules

ports:

- 80:8080
 

Я получаю следующую ошибку:

FROM node:12-alpine WORKDIR /usr/app COPY package*.json ./ RUN npm install COPY . . EXPOSE 8080

Структура проекта следующая.

{ "name": "testapp", "version": "0.0.1", "description": "Testapp", "author": "hi there", "main": "index.js", "scripts": { "start": "node index.js" }, "dependencies": { "express": "^4.16.4", "mongodb": "^3.2.3" } }

index.js

'use strict'; const MongoClient = require('mongodb').MongoClient; const express = require('express'); // Constants const PORT = 8080; // App const app = express(); app.get('/', (req, res) => { res.send('Hello world\n'); }); app.listen(PORT); console.log(`Running on Port:${PORT}`);

пакет.json

- testapp --- docker-compose.yml --- dockerfile --- src ----- index.js ----- package.json

файл докеры

Starting testapp_web_1 ... done Attaching to testapp_web_1 web_1 | web_1 | > [email protected] start /usr/app web_1 | > node index.js web_1 | web_1 | internal/modules/cjs/loader.js:613 web_1 | throw err; web_1 | ^ web_1 | web_1 | Error: Cannot find module 'mongodb' web_1 | Require stack: web_1 | - /usr/app/index.js web_1 | at Function.Module._resolveFilename (internal/modules/cjs/loader.js:610:15) web_1 | at Function.Module._load (internal/modules/cjs/loader.js:526:27) web_1 | at Module.require (internal/modules/cjs/loader.js:666:19) web_1 | at require (internal/modules/cjs/helpers.js:16:16) web_1 | at Object.<anonymous> (/usr/app/index.js:4:21) web_1 | at Module._compile (internal/modules/cjs/loader.js:759:30) web_1 | at Object.Module._extensions..js (internal/modules/cjs/loader.js:770:10) web_1 | at Module.load (internal/modules/cjs/loader.js:628:32) web_1 | at Function.Module._load (internal/modules/cjs/loader.js:555:12) web_1 | at Function.Module.runMain (internal/modules/cjs/loader.js:826:10) web_1 | npm ERR! code ELIFECYCLE web_1 | npm ERR! errno 1 web_1 | npm ERR! [email protected] start: `node index.js` web_1 | npm ERR! Exit status 1 web_1 | npm ERR! web_1 | npm ERR! Failed at the [email protected] start script. web_1 | npm ERR! This is probably not a problem with npm. There is likely additional logging output above. web_1 | web_1 | npm ERR! A complete log of this run can be found in: web_1 | npm ERR! /root/.npm/_logs/2019-05-04T15_34_04_615Z-debug.log testapp_web_1 exited with code 1

docker-compose.yml

sudo docker-compose up

я уже это читал поток переполнения стека но я не смог решить эту проблему. Я получаю эту ошибку независимо от того, какой модуль я пытаюсь использовать: mongodb, spdy и т. д. Локально без докера тестовое приложение работает. Но я не знаю, что я делаю не так с докером. Может ли кто-нибудь мне помочь?

#докер #node.js

UYY96


Рег
20 Feb, 2012

Тем
67

Постов
214

Баллов
569
  • 25, Oct 2024
  • #2

Вам нужно удалить тома все вместе. Файлы копируются вашей сборкой Dockerfile:

 
 docker build 
||answer|| node_modules

Этот том может перезаписывать то, что вы установили во время RUN npm install stage of the Dockerfile. As far as I can see you're not doing any installation when starting the container, so the contents of the mount are empty. If you remove that mount, the volumes: - /usr/app/node_modules путь будет заполнен тем, что было установлено во время version: '3' services: web: build: . command: npm start ports: - 80:8080 (as defined by the Dockerfile) phase.

 

Potemkin


Рег
21 Feb, 2006

Тем
91

Постов
191

Баллов
666
Похожие темы Дата
Похожие темы
Менеджер Сертификатов. Каков Наилучший Способ Предоставления Доступа К Службе Через Https В Kubernetes, Не Открывая Ее Для Доступа В Интернет?
Триггеры Azure Arm (Например, Ресурс Создан, Ресурс Удален И Т. Д.)
Kubernetes — Топологияspreadconstraints С Maxskew 1 Не Работает
Gitlab — Интеграция Sonarqube Не Удалась
Конвейер Jenkins + Интеграция С Docker
Ansible - Winrm/Wsman - Возникает Ошибка Подтверждения Ssl/Tcp Rst При Подключении По Ip-Адресу, Правильное Соединение При Подключении По Имени Хоста
Веб-Сервисы Amazon — Sqs Отображение Только «Данных» Журналов
Непрерывное Развертывание — Развертывание Octopus На Месте — Как Развертывать Проекты В Многопроектном Решении В Разных Местах Iis
Снимок Или Сохранение Данных Prometheus Для Тестирования И Сравнения Производительности
Dockerfile — Сборка Buildkit Завершается Неудачно С Отсутствующими Двоичными Файлами, Даже Если Они Находятся В $Path
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно