无法使用docker compose

时间:2016-08-23 05:57:52

标签: javascript node.js mongodb docker docker-compose

我的网络应用使用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

1 个答案:

答案 0 :(得分:3)

volumes:
  - .:/worklog

基本上掩盖了您在构建中使用主机上的文件安装的所有内容,包括/ worklog / node_modules(如果有)。你可以试试

volumes:
  - .:/worklog
  - /worklog/node_modules

我认为将/ worklog / node_modules覆盖在从主机安装的目录顶部的容器上,再次使node_modules对应用程序可见。