我的网络应用使用Node.js和MongoDB。我正在从docker image hub中提取mongo图像。当我构建我的节点应用程序的图像时,它运行良好。但是,当我使用compose启动容器时,会出现以下错误。在使用Dockerfile构建映像时,是不是应该安装软件包?
web_1 | module.js:457 web_1 |扔错了;
web_1 | ^
web_1 |
web_1 |错误:无法找到模块' mongoose'
web_1 |在Function.Module._resolveFilename(module.js:455:15)
web_1 |在Function.Module._load(module.js:403:25)
web_1 |在Module.require(module.js:483:17)
web_1 | at require(internal / module.js:20:19)
web_1 |在对象。 (/worklog/worklog.js:7:14)
web_1 |在Module._compile(module.js:556:32)
web_1 |在Object.Module._extensions..js(module.js:565:10)
web_1 |在Module.load(module.js:473:32)
web_1 |在tryModuleLoad(module.js:432:12)
web_1 |在Function.Module._load(module.js:424:3)
Dockerfile
FROM node
RUN mkdir -p /worklog
WORKDIR /worklog
RUN npm install mongoose \
express \
body-parser \
express-session \
method-override \
connect-mongo \
mongodb
COPY login.html worklog.html workloglist.html worklog.js /worklog/
ENV NODE_VERSION 6.3.1
EXPOSE 4000
CMD npm, start
搬运工-compose.yml
db:
image: mongo
ports:
- "27017:27017"
command: "--smallfiles --logpath=/dev/null"
web:
build: .
command: node worklog.js
volumes:
- .:/worklog
ports:
- "4000:4000"
links:
- db
environment:
PORT: 4000
答案 0 :(得分:3)
卷
volumes:
- .:/worklog
基本上掩盖了您在构建中使用主机上的文件安装的所有内容,包括/ worklog / node_modules(如果有)。你可以试试
volumes:
- .:/worklog
- /worklog/node_modules
我认为将/ worklog / node_modules覆盖在从主机安装的目录顶部的容器上,再次使node_modules对应用程序可见。