2016-07-19 7 views
1

Ich versuche, meinen Kopf rund um Docker und wie man es für Entwicklungszwecke verwenden. Ich entwickle in einer Windows 10-Umgebung. Ich habe die grundlegende Frage, wenn Sie Entwicklung auf Nodejs, sagen wir, Sie ändern eine .js-Datei. Ändern Sie es auf dem Host-Computer (Windows-Rechner) und schieben Sie es dann in den Docker-Container oder ändern Sie die Datei im Docker-Container selbst? Wenn ich die Datei im Docker-Container ändere, wie mache ich das?Nodejs Entwicklung auf Docker unter Windows 10

+0

Bearbeiten: Sie scheinen eine Windows 10-spezifische Antwort zu benötigen. Docker ist eher eine Linux-orientierte Technologie. 'docker run' hat einen Befehlszeilenschalter' -v/pfad/zu/host/file:/pfad/in/container', mit dem Sie Verzeichnisse auf dem Host verknüpfen können, die im Container auf diesen Pfaden erscheinen. Jedoch scheint die technologische Magie, die erlaubt, in Linux und nicht in Fenstern aufzutreten. Wenn Sie Docker in Windows ausführen, müssen Sie in der Regel eine Linux-VM einrichten, auf der der eigentliche Andockserver und die Container ausgeführt werden. Und abgesehen von neueren Entwicklungen, sind hier scheinbar Dateien erforderlich, wenn '-v' verwendet wird. – Paul

+0

@Paul - Ich bin mir überhaupt nicht sicher, was das mit seiner Frage zu tun hat, die mehr Node.js-Docker spezifisch ist und nicht Windows. Es ist in Ordnung für das OP, dies zu erwähnen, falls es relevant ist, aber es ist wirklich ein tangentielles Problem, kein primäres. – ldg

+0

Wenn Sie dieses sehr seltsame Setup nur für die Entwicklung haben (anstatt es auf dem Host zu entwickeln, testen Sie es im Docker), können Sie es überall ändern und es überallhin schieben - es liegt ganz bei Ihnen, wie Sie Dinge herummischen, ohne es zu haben ein bestimmtes Ziel vor Augen. Es gibt diese Setups, bei denen die Leute wirklich einen Container als ihre einzige Entwicklungsplattform betreiben, aber da Sie nicht wissen, wie man innerhalb des Containers pushen soll, ist dies wahrscheinlich nicht Ihr Setup. In allen anderen Fällen ändern Sie den Host, deployen Sie ihn im Container, testen Sie ihn, wiederholen Sie ihn, und drücken Sie auf den Host. –

Antwort

1

Sie ändern Ihren Quellcode aus dem Komfort Ihrer Host-Umgebung (Windows 10 oder was auch immer Sie möchten) dann Sie COPY diese Quelle zu Ihrem Container mit einem Dockerfile. Insbesondere mit NodeJS können Sie wie folgt verwenden:

Dockerfile

FROM node:6 

RUN mkdir -p /usr/src/app 
WORKDIR /usr/src/app 

COPY package.json /usr/src/app/ 
RUN npm install 
COPY . /usr/src/app 

# replace this with your application's default port 
EXPOSE 8888 

CMD [ "npm", "start" ] 

Dieses Bild geht davon aus, dass die Anwendung eine Datei package.json Auflistung ihrer Abhängigkeiten und der Festlegung ihrer start script benannt hat.

+ my-nodejs-app 
| -Dockerfile 
| -package.json 
| -server.js 
| ... 

Schließlich können Sie bauen und das Docker Bild laufen:

$ cd my-nodejs-app 
$ docker build -t my-nodejs-app . 

$ docker run -it --rm --name my-running-app -p 8888:8888 my-nodejs-app 

Alternativ können Sie Ihr Quellverzeichnis als Volume aktivieren und alle während der Entwicklung zu einem einzigen comand (nützlich reduzieren Stufe):

$ cd my-nodejs-app 
$ docker run -it --rm --name my-running-script \ 
    -v "$PWD":/usr/src/app -w /usr/src/app \ 
    -p 8888:8888 node:6 npm install && node server.js 
+0

Meine Sorge dabei ist, dass ich jedes Mal, wenn ich eine Änderung am Quellcode mache, die während der Entwicklung ziemlich oft passieren wird, den gesamten Prozess erneut durchlaufen muss. Das scheint umständlich, gibt es keinen einfacheren Weg? – user3547774

+0

Vielleicht ist es noch einfacher, einen temporären Container neu zu starten, um das Quellcodeverzeichnis zu mounten. Sehen Sie sich die Details in der obigen Antwort an –

0

Montage eines Volumes mit dem Code Ihre Arbeit ist Ihre beste Wette, so dass Sie nicht die Proc ausführen immer und immer wieder.