node.js - docker-compose 看不到来自 npm 的 node_modules

标签 node.js docker npm node-modules docker-compose

我想我不是第一个遇到这个问题的人,但我不认为 sultion 对我有用。

docker-compose.yml 文件

web:
build: .
volumes:
   - .:/src
ports:
   - "3000:3000"

Dockerfile

FROM node:0.12

RUN npm install -g mocha

RUN mkdir /src
WORKDIR /src
ADD package.json /src/package.json
RUN npm install
COPY . /src

EXPOSE 3000
CMD node server.js

在通过docker-compose up运行成功构建后,出现错误:

web_1 | Error: Cannot find module 'express'
web_1 |     at Function.Module._resolveFilename (module.js:336:15)
web_1 |     at Function.Module._load (module.js:278:25)
web_1 |     at Module.require (module.js:365:17)
web_1 |     at require (module.js:384:17)
web_1 |     at Object.<anonymous> (/src/server.js:1:77)
web_1 |     at Module._compile (module.js:460:26)
web_1 |     at Object.Module._extensions..js (module.js:478:10)
web_1 |     at Module.load (module.js:355:32)
web_1 |     at Function.Module._load (module.js:310:12)
web_1 |     at Function.Module.runMain (module.js:501:10)

有什么想法可能是错误的吗?我已经在这个任务上花费了 3 个多小时,但我不知道为什么这不起作用(docker 新手)。

最佳答案

我认为您正在使用 volume: - .:/src 覆盖目录。

如果您这样做,您需要在主机上运行 npm install

关于node.js - docker-compose 看不到来自 npm 的 node_modules,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32509513/

相关文章:

node.js - webpack - TypeError : dep. getResourceIdentifier 不是函数

node.js - 无法连接到任何rabbitmq云服务

node.js - Nodejs 表达可互换的 session 存储

Docker ping 其他节点上的容器

javascript - 指示 Bower 默认使用精确版本,而不是范围

node.js - npm 的 Jenkins 文件编码

node.js - firebase/messaging 不提供名为 getToken 的导出

javascript - 角色 Discord.js(在嵌入中打印角色)

docker - Docker-运行容器时清理文件内容

python - 使用 SSH 从 BitBucket pip 安装自定义包,无需在 Docker 构建期间输入 SSH 密码