2017-07-15 2 views
1

I Docker mit Docker Compose bin mit und das sind meine Dateien:New package.json Pakete nicht in Docker Behälter zeigt

#DOCKERFILE 

FROM mhart/alpine-node 

# Create app directory 
RUN mkdir -p /home/app 

# Bundle app soure 
COPY . /home/app 

# From now on we work in /home/app 
WORKDIR /home/app 

# Install yarn and node modules 
RUN echo -e 'http://dl-cdn.alpinelinux.org/alpine/edge/main\nhttp://dl- 
cdn.alpinelinux.org/alpine/edge/community\nhttp://dl- 
cdn.alpinelinux.org/alpine/edge/testing' > /etc/apk/repositories \ 
&& apk add --no-cache yarn \ 
&& yarn 

EXPOSE 8080 

Dies ist die Docker-compose Datei für Entwickler:

app: 
    build: . 
    command: yarn start:dev 
    environment: 
    NODE_ENV: development 
    ports: 
    - '8080:8080' 
    volumes: 
    - .:/home/app 
    - /home/app/node_modules 

Das Problem, das ich habe, ist, dass dieses Setup scheint nur einmal zu funktionieren, egal welches neue Modul ich hinzufügen, package.json, wenn ich docker-compose build ausführen wird es nicht das neue Paket installieren.

Der Grund, warum ich die Volumes verwende ist, weil knotemon ohne .:/home/app nicht funktionieren würde, aber wenn die Knotenmodule nicht im Host installiert sind, dann wird es fehlschlagen, Grund warum ich /home/app/node_modules brauche. Ich vermute, dass dies der Grund für meinen Fehler sein könnte, aber ich bin nicht sicher, wie ich das umgehen kann.

Antwort

1

Ich löste das, indem ich meinen src-Code in ein Verzeichnis src verschiebe. Das bedeutet, meine docker-compose.yml Datei nun wie folgt aussieht:

app: 
    build: . 
    command: yarn start:dev 
    environment: 
    NODE_ENV: development 
    ports: 
    - '8080:8080' 
    volumes: 
    - ./src:/home/app/src 

Da ich nicht das ganze Verzeichnis mit den node_modules Montage bin, neue scheinen korrekt installiert werden.

2

Die Datei package.json sollte in das Anwendungsverzeichnis kopiert werden, und "npm install" sollte in Dockerfile aufgerufen werden, bevor die Bundle-Zeile kopiert wird.

Wenn in package.json neue Abhängigkeitsregister vorhanden sind, sollten sie installiert werden, wenn der Befehl docker build aufgerufen wird.

+0

Hinweis Ich verwende "Garn" zum Installieren. Wie auch immer, das Ändern der Reihenfolge der Befehle wie in Ihrer Antwort hat leider nicht geholfen. – feychou