2015-10-23 17 views
6

Sto usando finestra mobile composizione e questo è il mio file YAMLCome installare gulp su una finestra mobile con finestra mobile-comporre

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

e qui è il mio file finestra mobile

FROM node:0.12.7 

RUN npm install -g bower gulp 

ADD . /app 
WORKDIR /app 

RUN bower install --allow-root 

Poi corro

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

ma ottengo il seguente errore

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** 

Ho provato ad aggiungere la riga RUN npm install gulp prima e dopo WORKDIR /app per ottenerlo installato localmente ma ottengo lo stesso errore

Aiuto

+0

Non so niente di fiato, ma il vostro Dockerfile dovrebbe terminare con un '' cmd' o EntryPoint 'Penso, vedi https://docs.docker.com/reference/builder/#cmd e https://docs.docker.com/reference/builder/#entrypoint – user2915097

risposta

7

È necessario corsa npm install gulp DOPO WORKDIR /app, in modo che gulp è installato localmente in node_modules/gulp. Ma l'hai già fatto e hai lo stesso errore. È perché nel tuo docker-compose-dev.yml, stai montando la directory host come il volume /app all'interno del contenitore mobile. Quindi le modifiche locali nella directory/app vengono perse quando si esegue il contenitore.

È possibile rimuovere i volumi da docker-compose-dev.yml o eseguire npm install gulp nella macchina host.

+0

Questo era perfetto, grazie mille. ho letteralmente trascorso 1,5 giorni lavorando su questo –

+0

Questo è tutto. La rimozione della sezione 'volumi' ha permesso al contenitore di funzionare. Grazie. – Francisco

0

È possibile creare startup.sh

npm install bower gulp 
bower install --allow-root 

(o qualsiasi altra cosa è necessario eseguire quando gli incendi container) e poi il Dockerfile dovrebbe eseguire startup.sh

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

lo script di avvio verrà eseguito dopo che il dir è montato da docker-compose.

Vorrei anche suggerire di montare node_modules nel file system temporaneo dichiarando nella finestra mobile-compose.yml:

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