2016-03-31 7 views
3

多分私はこれをオーバーコンプリートしています。Dockerコンテナからそのホストにファイルを同期バックする方法は?

私の目標は、Windows上でNode.jsアプリケーション開発用のDockerベースのワークフローを作成することです。開発時間で

  1. 、私はコンテナ内でローカルに私のアプリを実行して、まだあまり手間をかけずに最新版を見ることができると思います(私は最新のを見るために画像毎回を再構築する必要はありません) 。

  2. 私は生産に展開するとき一方、私は私のソースファイルは、すべての依存関係(npm install)とコンテナイメージに「焼き」がしたい

だから私は2 Vagrantfilesを作成 - 1つはコンテナ用、もう1つはホスト用です。ここでは後者の抜粋です:

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は(node_modulesなし)私のソースコードのすべてを含むディレクトリです。 Dockerfile、ドッカーコピー/usr/src/appcontainerからpackage.jsonや課題のビルドnpm installが私の第二の必要条件の罰金である(生産への展開)

中、しかし、私の最初の要件は、開発中のソースを変更することでしたので、私は/usr/src/appcontainerをマウントホストディレクトリ/usr/src/hostを指すボリュームとして指定します。ただし、/usr/src/hostにはnode_modulesフォルダがないため、これは機能しません。このフォルダはコンテナ内にのみ存在します。

この問題は簡単だと思います.Windowsでファイルを変更すると、LinuxホストのVMとそのコンテナの両方で変更されているのが見えますが、ちょっとしたことがあります。

この同期動作を実現するためのベストプラクティスは何ですか。

答えて

1

しかし、これは動作していない、は/ usr/src /ホストは、あなたがデータを使用して、インスタンスのために、this questionに記述のいずれかの方法を使用することができますnode_modulesフォルダ

を持っていないので、ボリュームはnode_modules専用です。
またはホストnode_modulesをコンテナ内の別のフォルダとしてマウントします。

+0

これです!ありがとう! – Zsolt

関連する問題