【问题标题】:docker not installing dependencies (node_modules) on host machinedocker未在主机上安装依赖项(node_modules)
【发布时间】: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


【解决方案1】:

我遇到了类似的问题,并通过在我的 docker-compose 文件中的 node_modules 目录中添加一个匿名卷来解决它。所以你的 docker-compose 文件中的卷看起来像这样:

volumes:
  - './frontend:/frontend:cached'
  - '/frontend/node_modules'

我从 this 博客文章中得到了这个想法

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-09
    • 2015-01-24
    • 2016-03-14
    • 2016-07-29
    • 1970-01-01
    • 2013-07-25
    • 1970-01-01
    相关资源
    最近更新 更多