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.
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) .
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?
Das ist es! Vielen Dank! – Zsolt