Как установить gulp на docker с помощью docker-compose



Я использую docker compose, и это мой файл yaml



web:
dockerfile: Dockerfile-dev
build: .
command: gulp
volumes:
- .:/app
ports:
- '9001:9001'


А вот мой файл docker



FROM node:0.12.7

RUN npm install -g bower gulp

ADD . /app
WORKDIR /app

RUN bower install --allow-root


Затем я бегу



docker-compose -f docker-compose-dev.yml build
docker-compose -f docker-compose-dev.yml up


Но я получаю следующую ошибку



Recreating web_web_1...
Attaching to web_web_1
web_1 | [07:39:08] Local gulp not found in /app
web_1 | [07:39:08] Try running: npm install gulp
web_web_1 exited with code 1
Gracefully stopping... (press Ctrl+C again to force)**strong text**


Я пытался добавить строку RUN npm install gulp до и после WORKDIR /app, чтобы установить ее локально, но я получаю ту же ошибку



Помогите

781   2  

2 ответов:

Вам нужно запустить npm install gulp после WORKDIR /app, так что глоток устанавливается локально в node_modules/gulp. Но вы уже сделали это и совершаете ту же ошибку. Это потому, что в вашем docker-compose-dev.yml, вы монтируете каталог хоста как Том /app внутри контейнера docker. Таким образом, локальные изменения в каталоге /app теряются при запуске контейнера.

Вы можете либо удалить тома из docker-compose-dev.yml, либо запустить npm install gulp на хост-машине.

Вы можете создать startup.sh

npm install bower gulp
bower install --allow-root

(или все, что вам нужно запустить при срабатывании контейнера), то ваш Dockerfile должен выполнить startup.sh

...
CMD ["/startup.sh"]

Сценарий запуска будет выполнен после монтирования dir с помощью docker-compose.

Я бы также предложил смонтировать node_modules во временной файловой системе, объявленной в docker-compose.yml:

volumes:
- .:/app
- /app/node_modules

Comments

    Ничего не найдено.