auf dem neuesten Stand halten Ich arbeite mit einem Team auf einem Repo in Docker und Knoten gebaut. Wenn jemand anderes Knotenpakete installiert, I git pull
diese Änderungen an package.json
und package-lock.json
.node_module in Docker
Ich kann nicht nur docker-compose build
und dann docker-compose up
ausführen, um diese neuen Knotenpakete zu installieren. Ich muss zuerst docker-compose down -v
. Dies liegt daran, dass wir ein Volume zum Speichern der Knotenmodule verwenden. Wir sind nicht daran gebunden und würden die Module lieber einfach in einer Docker-Bildebene speichern. Wenn wir jedoch das App-Volume binden (- .:/app
in docker-compose.yml
), wird der Ordner node_modules
im Bild schattiert.
Es fühlt sich an, als würden wir den falschen Ansatz wählen, aber das scheint die allgemein akzeptierte Praxis zu sein. Unser Setup basiert auf "Lessons from Building a Node App in Docker"
Unsere Dockerfile
:
FROM node:8.4.0
WORKDIR /app
COPY package.json package-lock.json ./
RUN npm install --loglevel=error --progess=false
COPY . /app/
Unsere docker-compose.yml
:
---
version: '2.1'
services:
main:
build:
context: .
volumes:
- .:/app
- /app/node_modules
container_name: main
command: ['node', 'index.js']
Mein Verständnis des Problems ist, dass in der docker-compose.yml
Datei Das Volumen - /app/node_modules
schafft ein Volume, das kopiert die Knotenmodule aus der Bildschicht in ein Volumen, das heißt, wenn wir die App wieder mit einem anderen bauen package.json
, das Bild wird aktualisiert, aber nicht das Volume. down
Das Volume zwingt ihn, das aktualisierte Bild node_modules
erneut zu kopieren, weshalb das funktioniert. Bitte lassen Sie mich wissen, wenn mein Verständnis ist falsch :)
Wir laufen in AWS ECS, so können wir leider nur Docker Funktionen in 17.03.2-CE (keine mehrstufigen Docker Dateien für jetzt) verwenden.
Mögliche Betrüger von https://stackoverflow.com/questions/43538187/docker-compose-v3-named-volume-node-modules-from-npm-install?rq=1, obwohl es keine Antwort hat –
Auch potenziell verwandt: https://StackOverflow.com/Questions/46916101/keeping-Node-Modules-up-to-Date-in-Docker –