2016-03-31 2 views
3

Vielleicht übertreibe ich das.Wie kann ich Dateien von einem Docker-Container mit seinem Host synchronisieren?

Mein Ziel ist es, einen Docker-basierten Workflow unter Windows für die Node.js-Anwendungsentwicklung zu erstellen.

  1. In Entwicklungszeit, würde ich in der Lage sein, meine Anwendung lokal in einem Container laufen und immer noch die neueste Version ohne allzu viel Aufwand sehen (ich will nicht das Bild jedes Mal neu zu erstellen spätestens zu sehen) .

  2. Auf der anderen Seite, wenn ich für die Produktion bereitstellen, ich möchte, dass meine Quelldateien „gebacken“ in den Behälter Bild haben, mit allen Abhängigkeiten (npm install)

ich zwei Vagrantfiles So erstellt - eine für den Container und eine für seinen Host. Hier ist ein Auszug aus der letzteren:

Vagrant.configure(2) do |config| 
    config.vm.provider "docker" do |docker| 
    docker.vagrant_vagrantfile = "host/Vagrantfile" # it references the host Vagrantfile 
    docker.build_dir = "." # we have a Dockerfile in the same dir 
    docker.create_args = ['--volume="/usr/src/host:/usr/src/appcontainer:rw"'] 
    end 
end 

/usr/src/host ist ein Verzeichnis, das alle meine Quellcode enthält (ohne node_modules). Während der Erstellung des Dockerfile, Kopien Docker die package.json-/usr/src/appcontainer und gibt ein npm install dort die für meine zweite Anforderung in Ordnung ist (bereitstellen, um die Produktion)

Aber meine erste Forderung war die Quelle während der Entwicklung zu ändern, so bestieg ich /usr/src/appcontainer als Volume auf das Host-Verzeichnis /usr/src/host. Dies funktioniert jedoch nicht, da /usr/src/host keinen node_modules Ordner hat - dieser Ordner existiert nur im Container.

Dieses ganze Problem scheint einfach zu sein - Ändern einer Datei unter Windows, sehen Sie, wie es unter der Linux-Host-VM und in seinem Container ändert und umgekehrt ... Aber ich habe ein bisschen fest.

Was ist die beste Vorgehensweise, um dieses Synchronisierungsverhalten zu erzielen?

Antwort

1

Dies ist jedoch nicht funktioniert, da/usr/src/Host keinen node_modules Ordner

Sie einen der Ansätze in this question beschrieben verwenden kann, beispielsweise durch ein Datum mit Volume gewidmet für node_modules.
Oder den Host node_modules als separaten Ordner innerhalb des Containers.

+0

Das ist es! Vielen Dank! – Zsolt

Verwandte Themen