2016-08-04 17 views
1

Ich stoße auf ein Problem Ich bin sicher, ist super offensichtlich für einen Hafenarbeiter Experte, ist aber auf mich verloren.docker webpack kompilierte Dateien fehlen beim Laufen

Unten ist meine Docker-Datei, in der ich ein paar "ls" hinzugefügt habe, damit ich die Dateien, die Webpack generiert, überprüfen kann.

Die ersten "ls"

Step 8 : RUN ls server/public 
---> Running in 67bc7ee5f832 
bundle.css 
bundle.js 
index.html 

richtig zeigt aber die zweite ls ist nicht

web_1 | index.html 

Dockerfile:

FROM node:6.2 

# Create app directory 
RUN mkdir -p /usr/src/app 
WORKDIR /usr/src/app 
COPY package.json /usr/src/app/ 

RUN npm i 

COPY . /usr/src/app/ 

# Build Static Resources 
RUN npm run build 

# ls here shows correct files 
RUN ls server/public 

# Bundle app source 

ENV NODE_ENV=production 

# ls here doesn't show compiled files 
CMD ls server/public && npm start 

EXPOSE 3000 

Was bin ich? Warum sind diese bundle.css/js nicht im Browser vorhanden, nachdem nodejs ausgeführt wurde?

Wie kann ich überprüfen, ob das Verzeichnis korrekt kopiert wurde?

Dank

Antwort

1

RUN definiert einen Schritt, der während des docker build des Bildes führt.

CMD definiert den Standardbefehl (oder Argumente, die an die ENTRYPOINT übergeben werden, wenn definiert), die ausgeführt wird, wenn Sie Ihren Container docker run.

Beachten Sie, dass Docker auch Layer zwischenspeichert. Wenn Sie also einen anderen Build ausführen, wird RUN ls übersprungen, wenn Docker ein Ergebnisbild für genau diesen Befehl auf dem Hash der vorherigen Ebene findet.

in Ihrem Container zu suchen, können Sie eine Schale es durchsuchen laufen kann:

docker run -it --rm your_image_name /bin/bash

Da Sie /bin/bash passieren, ist der Standard CMD wird eine Shell gestartet wird umgangen und nur.

+0

Mein Problem war ich habe versucht, mein Repository auf den Remote-Server ziehen git; bilde das Bild dort und verwende dann "docker-compose up", was nicht funktionierte (immer noch nicht sicher, warum ich verstehe). Statt jetzt baue ich die Bilder lokal, laden Sie sie auf Docker-Hub, ziehen sie auf dem Remote-Server und führen sie einzeln und sie funktionieren wie erwartet – Lucas

+1

Rückblickend, ich vermutete das Problem war ein Datenträger-Mount in getan wird die Datei verfassen. Ohne diese Datei ist dies nur eine Vermutung. @Nachiket, bitte öffne eine neue Frage mit deinen Dateien, Kommentare sind kein guter Ort für Q & A. – BMitch