Javascript 无法使用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) 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) DockerfileJavascript 无法使用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
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”。