【发布时间】:2018-05-30 23:32:33
【问题描述】:
当我运行 docker-compose build 时,我看到 package.json 的依赖项正在安装在容器上,但没有安装在我的机器上。所以之后当我运行docker-compose up 时,我得到了找不到依赖项的错误,即:Error: Cannot find module 'express'
我的应用结构非常简单,如下所示:
|____frontend
| |____index.html
| |____index.js
| |____webpack.config.js
| |____yarn.lock
| |____package.json
| |____dev.Dockerfile
|____backend
| |____server.js
| |____yarn.lock
| |____package.json
| |____dev.Dockerfile
|____docker-compose.yml
我的 docker-compose.yml:
version: "3.3"
services:
frontend:
build:
context: .
dockerfile: frontend/dev.Dockerfile
volumes:
- ./frontend:/frontend:cached
command: yarn start
backend:
build:
context: .
dockerfile: backend/dev.Dockerfile
volumes:
- ./backend:/backend:cached
command: yarn start
这是一个用于前端的 Dockerfile(后端看起来一样):
FROM node:latest
WORKDIR "/frontend/"
COPY frontend/package.json frontend/package.json
COPY frontend/yarn.lock frontend/yarn.lock
RUN yarn
这个配置有什么问题?我错过了什么?
【问题讨论】:
-
我没有看到您安装依赖项的位置。
-
我正在使用一个名为
yarn的包管理器。在我的 dockerfiles 我有一个RUN yarn命令,它应该安装依赖项 -
哦,我不知道命令
yarn单独安装了依赖项。我总是使用yarn install。关于您的问题,我将首先检查package.json以查看express是否包含在依赖项中,并检查由 yarn 进行安装后创建的node_modules文件夹,以查看是否有 express 文件夹,其中如果一切正常,则应安装该库。
标签: javascript node.js reactjs docker docker-compose