Docker镜像似乎不会安装所有NPM依赖项

问题描述 投票:0回答:1

我正在尝试构建我的网站的docker镜像,当我运行docker镜像时出现错误。

编辑 - 我应该在我的终端中进一步滚动。我添加了更多的错误抛出,一切都在“找不到模块”错误

[nodemon] 1.18.10
[nodemon] to restart at any time, enter `rs`
[nodemon] watching: *.*
[nodemon] starting `node /app/bin/www`
module.js:549
    throw err;
    ^

Error: Cannot find module 'http-errors'
    at Function.Module._resolveFilename (module.js:547:15)
    at Function.Module._load (module.js:474:25)
    at Module.require (module.js:596:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/app/app.js:1:81)
    at Module._compile (module.js:652:30)
    at Object.Module._extensions..js (module.js:663:10)
    at Module.load (module.js:565:32)
    at tryModuleLoad (module.js:505:12)
    at Function.Module._load (module.js:497:3)
[nodemon] app crashed - waiting for file changes before starting...

<--- Last few GCs --->

[1:0x565258d75180]   414856 ms: Mark-sweep 1309.2 (1582.5) -> 1309.2 (1582.5) MB, 2530.2 / 5.1 ms  allocation failure GC in old space requested
[1:0x565258d75180]   417744 ms: Mark-sweep 1309.2 (1582.5) -> 1309.1 (1532.5) MB, 2888.2 / 3.7 ms  last resort GC in old space requested
[1:0x565258d75180]   420496 ms: Mark-sweep 1309.1 (1532.5) -> 1309.1 (1516.0) MB, 2751.5 / 3.5 ms  last resort GC in old space requested


<--- JS stacktrace --->

==== JS stack trace =========================================

Security context: 0xcffe1418fe1 <JSObject>
    1: /* anonymous */ [/usr/local/lib/node_modules/nodemon/node_modules/chokidar/lib/nodefs-handler.js:~469] [pc=0x15a33d12c394](this=0x4fe20721119 <FSWatcher map = 0x36e524f53f59>,error=0xcffe1402211 <null>,stats=0x3fd707c20c69 <Stats map = 0x36e524f57de9>)
    2: oncomplete [fs.js:~151] [pc=0x15a33d14d9a0](this=0x2209263a8549 <FSReqWrap map = 0x36e524f3d879>,err=0xcffe1402211 <null>)

==== Det...

FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory
 1: node::Abort() [node]
 2: 0x565257a6b011 [node]
 3: v8::Utils::ReportOOMFailure(char const*, bool) [node]
 4: v8::internal::V8::FatalProcessOutOfMemory(char const*, bool) [node]
 5: v8::internal::Factory::NewFixedArray(int, v8::internal::PretenureFlag) [node]
 6: v8::internal::HashTable<v8::internal::NameDictionary, v8::internal::NameDictionaryShape>::New(v8::internal::Isolate*, int, v8::internal::PretenureFlag, v8::internal::MinimumCapacity) [node]
 7: v8::internal::HashTable<v8::internal::NameDictionary, v8::internal::NameDictionaryShape>::EnsureCapacity(v8::internal::Handle<v8::internal::NameDictionary>, int, v8::internal::PretenureFlag) [node]
 8: v8::internal::Dictionary<v8::internal::NameDictionary, v8::internal::NameDictionaryShape>::Add(v8::internal::Handle<v8::internal::NameDictionary>, v8::internal::Handle<v8::internal::Name>, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyDetails, int*) [node]
 9: v8::internal::LookupIterator::ApplyTransitionToDataProperty(v8::internal::Handle<v8::internal::JSObject>) [node]
10: v8::internal::Object::AddDataProperty(v8::internal::LookupIterator*, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyAttributes, v8::internal::Object::ShouldThrow, v8::internal::Object::StoreFromKeyed) [node]
11: v8::internal::Object::SetProperty(v8::internal::LookupIterator*, v8::internal::Handle<v8::internal::Object>, v8::internal::LanguageMode, v8::internal::Object::StoreFromKeyed) [node]
12: v8::internal::Runtime::SetObjectProperty(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, v8::internal::LanguageMode) [node]
13: v8::internal::Runtime_SetProperty(int, v8::internal::Object**, v8::internal::Isolate*) [node]
14: 0x15a33cf040bd

我假设由于某种原因并没有安装所有npm依赖项,这就是它抛出错误的原因?

这是我的docker文件

FROM ubuntu

RUN apt-get update -y
RUN apt-get upgrade -y

RUN apt-get install nodejs -y
RUN apt-get install npm -y

RUN npm install -g nodemon

COPY . /app

RUN npm install

EXPOSE 80


CMD ["nodemon", "/app/bin/www"]
node.js docker npm
1个回答
1
投票

是的,我不是一个伟大的Docker专家,但你的WORKDIR /app命令之后看起来像你需要的是COPY命令。

否则npm install将在您的容器根目录中运行,而不是在/app文件夹中运行。

© www.soinside.com 2019 - 2024. All rights reserved.