Как установить gulp на докер с 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
, чтобы установить его локально, но я получаю ту же ошибку
помогите
2 ответов
вам нужно run npm install gulp
после WORKDIR /app
, так что gulp устанавливается локально в node_modules/gulp
. Но вы уже сделали это, и получив ту же ошибку. Это потому, что в вашем docker-compose-dev.yml
, вы монтируете каталог хоста как /app
объем внутри контейнера docker. Таким образом, локальные изменения в каталоге /app теряются при запуске контейнера.
вы можете удалить тома из docker-compose-dev.yml
или run 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