【问题标题】:Docker : Unable to find local gruntDocker:找不到本地咕噜声
【发布时间】:2019-06-24 20:50:53
【问题描述】:

我尝试 dockerise 一个旧的 angularJS 应用程序,但我遇到了一个问题。我的印象是,当 docker 拨出我的音量时,它会覆盖之前所做的一切。

我的图像已成功构建,但运行时出现此错误:Fatal error: Unable to find local grunt.

我的目标是能够在保持热重载的同时构建我的应用程序。

Dockerfile:

FROM mhart/alpine-node:6 as builder

# Confirm versions
RUN node -v
RUN npm -v

# Add 
COPY package.json /usr/src/app/package.json
COPY bower.json /usr/src/app/bower.json
COPY Gruntfile.js /usr/src/app/Gruntfile.js
COPY .bowerrc /usr/src/app/.bowerrc

# Define app as root dir
WORKDIR /usr/src/app

# add app
#COPY . /usr/src/app

# Install sass & compass
RUN apk update && \
apk upgrade

RUN apk add --update \
ruby \
ruby-irb \
ruby-dev \
ruby-rdoc \
libffi-dev \
build-base

RUN gem install \
sass \
compass

# Install Perl
RUN apk add perl

# Install Git (rquired for angular dep)
RUN apk add git

# Install Yarn
RUN npm install -g yarn
RUN yarn -v

# Install dependencies
RUN npm install bower -g\
&& npm install -g grunt-cli \
&& yarn add grunt-contrib-imagemin \
&& yarn


# Build
RUN bower install --allow-root

EXPOSE 9000 35729

CMD [ "grunt", "--force" ,"server" ]

**docker-compose : **

version: '3.7'
services:
  app-dev:
    container_name: app-dev
    build:
      context: .
      dockerfile: Dockerfile-dev
    volumes:
        - .:/usr/src/app/
    ports:
      - '9000:9000'
      - '35729:35729'
    restart: always

【问题讨论】:

    标签: angularjs docker docker-compose gruntjs


    【解决方案1】:

    看起来您没有在 docker 映像上运行 npm install,这意味着您的 package.json 中的任何包都不会出现。

    通常,您应该使用 .dockerignore 从 docker 构建上下文中排除 node_modules,因为您将要在容器内重建依赖项。例如,一个依赖模块可能需要为某些东西编译一个本地模块。例如,node-sass 有一个已编译的组件。

    【讨论】:

      猜你喜欢
      • 2013-03-15
      • 2017-04-30
      • 2014-07-25
      • 2015-04-13
      • 2013-03-07
      • 2015-05-25
      • 2015-08-03
      • 2014-06-30
      • 2014-10-17
      相关资源
      最近更新 更多