gpt4 book ai didi

javascript - 无法使用 docker compose 安装包

转载 作者:太空宇宙 更新时间:2023-11-04 03:30:12 25 4
gpt4 key购买 nike

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

web_1 | module.js:457 web_1 | throw err;

web_1 | ^

web_1 |

web_1 | Error: Cannot find module 'mongoose'

web_1 | at Function.Module._resolveFilename (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 | at require (internal/module.js:20:19)

web_1 | at Object. (/worklog/worklog.js:7:14)

web_1 | at Module._compile (module.js:556:32)

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

web_1 | at Module.load (module.js:473:32)

web_1 | at tryModuleLoad (module.js:432:12)

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_modules (如果有)。你可以试试

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

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

关于javascript - 无法使用 docker compose 安装包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39093383/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com