Reputation: 913
I am using docker compose and this is my yaml file
web:
dockerfile: Dockerfile-dev
build: .
command: gulp
volumes:
- .:/app
ports:
- '9001:9001'
and here is my docker file
FROM node:0.12.7
RUN npm install -g bower gulp
ADD . /app
WORKDIR /app
RUN bower install --allow-root
Then i run
docker-compose -f docker-compose-dev.yml build
docker-compose -f docker-compose-dev.yml up
But i get the following error
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**
I have tried adding the line RUN npm install gulp
before and after WORKDIR /app
to get it installed locally but i get the same error
Help
Upvotes: 8
Views: 18126
Reputation: 247
To future googlers:
check if you do not have Node image in production environment. It won't work and you will hate life.
For gulp to work you should have development env set like this:
FROM node:latest AS build
ENV NODE_ENV=development
Upvotes: 0
Reputation: 6513
You can create startup.sh
npm install bower gulp
bower install --allow-root
(or whatever you need to run when container fires) then your Dockerfile should execute startup.sh
...
CMD ["/startup.sh"]
the startup script will be executed AFTER the dir is mounted by docker-compose.
I would also suggest to mount node_modules in the temporary file system declaring in the docker-compose.yml:
volumes:
- .:/app
- /app/node_modules
Upvotes: 0
Reputation: 17498
You need to run npm install gulp
AFTER WORKDIR /app
, so that gulp is installed locally in node_modules/gulp
. But you already did that and having the same error. It's because in your docker-compose-dev.yml
, you are mounting host directory as /app
volume inside docker container. So local changes in /app directory is lost when you are running the container.
You can either remove volumes from docker-compose-dev.yml
or run npm install gulp
in host machine.
Upvotes: 10