Докер: Невозможно найти местное ворчание - PullRequest
0 голосов
/ 24 июня 2019

Я пытаюсь докеризовать старое приложение angularJS, но у меня возникает проблема.У меня сложилось впечатление, что когда докер набирает мой том, он перезаписывает все, что было сделано ранее.

Мое изображение создается успешно, но когда я его запускаю, у меня появляется эта ошибка: 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

1 Ответ

0 голосов
/ 25 июня 2019

Не похоже, что вы запускаете npm install в образе докера, это означает, что ни один из ваших пакетов из вашего package.json не будет представлен.

В общем, вы должны исключить node_modulesиз контекста сборки docker с .dockerignore, так как вы захотите перестроить свои зависимости внутри контейнера.Зависимый модуль может, например, для чего-то скомпилировать собственный модуль.Например, node-sass имеет скомпилированный компонент.

...