run nodejs node_modules node hub development compose app docker gulp boot2docker dockerfile docker-compose

nodejs - Cómo instalar gulp en una ventana acoplable con docker-componer



docker hub node dockerfile (2)

Estoy usando docker compose y este es mi archivo yaml

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

y aquí está mi archivo docker

FROM node:0.12.7 RUN npm install -g bower gulp ADD . /app WORKDIR /app RUN bower install --allow-root

Entonces corro

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

Pero me sale el siguiente 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**

He intentado agregar la línea RUN npm install gulp antes y después de WORKDIR /app para instalarlo localmente pero recibo el mismo error

Ayuda


npm install gulp ejecutar npm install gulp DESPUÉS DE WORKDIR /app , para que gulp se instale localmente en node_modules/gulp . Pero ya lo hiciste y tienes el mismo error. Es porque en su docker-compose-dev.yml , está montando el directorio de host como volumen de /app dentro del contenedor de Docker . Así que los cambios locales en el directorio / app se pierden cuando está ejecutando el contenedor.

Puede eliminar volúmenes de docker-compose-dev.yml o ejecutar npm install gulp en el equipo host.


Puede crear startup.sh

npm install bower gulp bower install --allow-root

(o lo que sea que necesite ejecutar cuando el contenedor se dispara), entonces su Dockerfile debería ejecutar startup.sh

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

el script de inicio se ejecutará DESPUÉS de que el directorio esté montado por docker-compose.

También sugeriría montar node_modules en el sistema de archivos temporales que declara en docker-compose.yml:

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