2015-10-23 23 views
6

ich Docker compose bin mit und das ist mein yaml DateiWie schluck installieren auf einem Docker mit Docker-komponieren

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

und hier ist meine Docker Datei

FROM node:0.12.7 

RUN npm install -g bower gulp 

ADD . /app 
WORKDIR /app 

RUN bower install --allow-root 

Dann laufen i

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

aber ich bekomme die folgenden Fehler

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

ich die Linie RUN npm install gulp vor und nach WORKDIR /app Zugabe haben versucht, es lokal zu erhalten installiert, aber ich

Hilfe

+0

Ich weiß nichts über Schluck, aber Ihre Dockerfile sollten mit einem 'CMD' oder' ENTRYPOINT Ende 'Ich denke, siehe https://docs.docker.com/reference/builder/#cmd und https://docs.docker.com/reference/builder/#entrypoint – user2915097

Antwort

7

Sie müssen laufen npm install gulp NACH WORKDIR /app, den gleichen Fehler, so dass Zug installiert ist lokal in node_modules/gulp. Aber du hast das schon gemacht und den gleichen Fehler. Es ist, weil in Ihrem docker-compose-dev.yml, Sie Host-Verzeichnis als /app Datenträger im Docker Container anhängen. Daher gehen lokale Änderungen im Verzeichnis/app verloren, wenn Sie den Container ausführen.

Sie können Volumes entweder von docker-compose-dev.yml entfernen oder npm install gulp auf dem Host-Computer ausführen.

+0

Das war genau richtig, vielen Dank. Ich habe buchstäblich 1,5 Tage damit verbracht, an diesem –

+0

zu arbeiten Das ist es. Durch das Entfernen des Abschnitts "Volumes" wurde der Container ausgeführt. Vielen Dank. – Francisco

0

können Sie erstellen startup.sh

npm install bower gulp 
bower install --allow-root 

(oder was auch immer Sie laufen müssen, wenn Container Feuer), dann sollten Sie Ihre Dockerfile startup.sh ausführen

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

das Startskript wird nach der Richt ausgeführt werden wird von docker-compose bereitgestellt.

ich auch node_modules in dem temporären Dateisystem erklärt in der Docker-compose.yml montieren würde vorschlagen:

volumes: 
- .:/app 
- /app/node_modules 
Verwandte Themen