2017-10-31 3 views
3

Ich baue ein Docker Bild Docker für meinen Node.js Anwendung folgenden mit Dockerfile:Fehlende `node_modules` in Docker Container

FROM keymetrics/pm2:latest 

RUN apk add --no-cache --update alpine-sdk python 

# Bundle APP files 
COPY package.json . 

# Install app dependencies 
ENV NPM_CONFIG_LOGLEVEL warn 
RUN npm install 
RUN npm rebuild bcrypt --build-from-source 

COPY . . 

# Show current folder structure in logs 
RUN ls -al 

EXPOSE 3000 
VOLUME /app/uploads 

CMD [ "pm2-docker", "start", "pm2.json" ] 

Das Problem ist, dass die node_modules Ordner in Docker-Container nicht vorhanden ist erstellt von diesem Bild wird die Anwendung daher auf einen Fehler stoßen, der nicht ausgeführt wird.

Ich habe node_modules in meiner .dockerignore Datei, aber da ich die notwendigen Pakete im Build-Prozess installieren (RUN npm install), sollte dies kein Problem verursachen.

+0

Vielleicht ist das Problem mit 'COPY. . 'das überschreibt alles' npm install' ist installiert? Ersetzen Sie "COPY package.json." Durch "COPY". .', da Ihre 'package.json' ebenfalls mit diesem Befehl kopiert werden soll. – vfsoraki

+0

@vfsoraki das ist nicht der Fall. Ich habe versucht, den COPY zu kommentieren. .' Ausschnitt aus, aber 'node_modules' fehlt noch. –

+0

machen Sie in einem Lauf die npm, etwas wie 'RUN npm installieren && npm bcrypt --build-from-source 'neu erstellen – user2915097

Antwort

0

Dann, warum erstellen Sie dieses Verzeichnis nicht bei Build (dh Hinzufügen der folgenden Zeile in Ihrem Dockerfile vor RUN npm install)?

RUN mkdir <workdir>/node_modules

(Ersetzen <workdir> mit dem aktuellen Standard-Arbeitsverzeichnis des keymetrics/pm2 Bild)