docker中的Node.js错误

时间:2017-09-12 07:47:36

标签: node.js docker docker-compose

我使用node:最新图片。 得到 ModuleBuildError: Module build failed: ModuleBuildError: Module build failed: Error: spawn /hobover_web_client/node_modules/pngquant-bin/vendor/pngquant ENOENT
Dockerfile

FROM node:latest

# set working directory
RUN mkdir -p /hobover_web_client
WORKDIR /hobover_web_client
ENV NPM_CONFIG_LOGLEVEL=warn
COPY package.json yarn.lock /hobover_web_client/

# install app dependencies   
RUN  rm -rf  node_modules/ && yarn install --ignore-scripts && yarn global add babel babel-cli webpack nodemon pngquant optipng recjpeg
ADD . /hobover_web_client

在docker-compose.yml

version: '2'
  hobover_web_client:
    container_name: hobover_web_client
    build: ./hobover_web_client
    command: yarn start    
    ports:
      - "8080:8080"
    volumes:
      - ./hobover_web_client:/hobover_web_client
      - /hobover_web_client/node_modules

成功构建工作,但向上导致错误。 如果没有docker它可以解决它怎么办呢?

1 个答案:

答案 0 :(得分:1)

您的问题是app和node_modules的安装位于同一目录中。在docker-compose中使用以下内容时

  - ./hobover_web_client:/hobover_web_client

你掩盖了现有的node_modules。因此,您需要使用NODE_PATH重新定位您的包。将Dockerfile更改为

FROM node:latest

# set working directory
RUN mkdir -p /hobover_web_client /node_modules
WORKDIR /hobover_web_client
ENV NPM_CONFIG_LOGLEVEL=warn NODE_PATH=/node_moudles
COPY package.json yarn.lock /hobover_web_client/

# install app dependencies   
RUN  yarn install --ignore-scripts && yarn global add babel babel-cli webpack nodemon pngquant optipng recjpeg
ADD . /hobover_web_client

将你的作品改为

version: '2'
  hobover_web_client:
    container_name: hobover_web_client
    build: ./hobover_web_client
    command: yarn start    
    ports:
      - "8080:8080"
    volumes:
      - ./hobover_web_client:/hobover_web_client
      - /node_modules

所以现在你的/node_modules转到匿名卷,你不需要也可以删除,因为路径在不同的文件夹中