Javascript 无法使用docker compose安装程序包

Javascript 无法使用docker compose安装程序包,javascript,node.js,mongodb,docker,docker-compose,Javascript,Node.js,Mongodb,Docker,Docker Compose,我的web应用程序使用Node.js和MongoDB。我正在从中提取mongo图像。当我构建节点应用程序的映像时,它单独运行良好。但是,当我使用compose启动容器时,会出现以下错误。当从Dockerfile构建映像时,它不应该安装包吗 web|u 1 | module.js:457 web|1 |抛出错误 web_1|^ web_1| web_1|错误:找不到模块“mongoose” web_1 | at Function.Module._解析文件名(Module.js:455:15) we

我的web应用程序使用Node.js和MongoDB。我正在从中提取mongo图像。当我构建节点应用程序的映像时,它单独运行良好。但是,当我使用compose启动容器时,会出现以下错误。当从Dockerfile构建映像时,它不应该安装包吗

web|u 1 | module.js:457 web|1 |抛出错误

web_1|^

web_1|

web_1|错误:找不到模块“mongoose”

web_1 | at Function.Module._解析文件名(Module.js:455:15)

web_1| at Function.Module._load(Module.js:403:25)

web_1| at Module.require(Module.js:483:17)

web_1|根据需要(内部/module.js:20:19)

web_1| at对象。(/worklog/worklog.js:7:14)

web|1 | at Module._编译(Module.js:556:32)

web_1| at Object.Module._extensions..js(Module.js:565:10)

web_1|位于Module.load(Module.js:473:32)

tryModuleLoad(module.js:432:12)上的web_1

web_1| at 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 
docker-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

volumes:
  - .:/worklog
基本上是使用主机上的文件屏蔽构建中安装到/worklog的所有内容,包括/worklog/node_模块(如果有)。你可以试试

volumes:
  - .:/worklog
  - /worklog/node_modules
我认为它再次覆盖了从主机装载的目录顶部容器中的/worklog/node_模块,使node_模块对应用程序可见。

volumes:
  - .:/worklog
基本上是使用主机上的文件屏蔽构建中安装到/worklog的所有内容,包括/worklog/node_模块(如果有)。你可以试试

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

我认为它再次覆盖了从主机装载的目录顶部容器中的/worklog/node_模块,使应用程序可以看到node_模块。

尝试“docker compose rm web&&docker compose rm db&&docker compose build&&docker compose up”从干净的环境开始。如果你是“docker ps”,你能看到db_1容器在运行吗?我试过了,但结果还是一样的。我看到,当我使用
docker compose up
或您的命令时,它不会从归档中提取包。是,我可以看到db_1正在运行。请尝试在生成命令之前添加“docker compose pull”。尝试“docker compose rm web&&docker compose rm db&&docker compose build&&docker compose up”以从干净的环境开始。如果你是“docker ps”,你能看到db_1容器在运行吗?我试过了,但结果还是一样的。我看到,当我使用
docker compose up
或您的命令时,它不会从归档中提取包。是,我可以看到db_1正在运行。请尝试在生成命令之前添加“docker compose pull”。