VagrantfileでホストOSとゲストOSのフォルダを同期したい時にconfig.vm.synced_folder
で設定しますが、ホストOS側、ゲストOS側それぞれパスの設定の仕方を華麗にミスったせいでよく分からんフォルダ同士が謎に同期されるという事象が起きたので、2度とこのようなことが起こらぬようここに記しておきます。
※追記
コメントでご指摘がありましたが、
ホスト側のパスはVagrantfileからの相対パスだそうなので修正しました。
■結論
以下のように、ホストOS、ゲストOS共に最上位のフォルダからのパスをきちんと書いて、かつホストOS側のフォルダが存在しない場合は自動生成するcreate:"true"
というオプションをつけることでうまくいきました。
config.vm.synced_folder "/docker", "/home/ubuntu/vagrant",create:"true"
■フォルダ構成
ホストOS
VagrantのゲストOSにUbuntuを導入して、そこにdockerを試しに入れてみようと思っていたので、Developフォルダの中にVagrantfile
を設置し、同じくDevelopフォルダの中にdocker
というフォルダを作成しました。
/Users/katsuki_y/Develop/docker
ゲストOS
/home/ubuntu
■もともとどんな設定をしたか
1.最初の設定
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/xenial64"
config.vm.synced_folder "/docker","/vagrant"
end
docker
フォルダ内にVagrantfile
が存在したので、ホストOS側のdockerフォルダを同期しようと思いました。
また、ゲストOS側は/home/ubuntu
の下に/vagrant
フォルダを自動作成してdocker
フォルダと同期しようとしました。
↓
結果、ホストOS側の/docker
フォルダがありません!と怒られました。
1.次の設定
そうか、ホストOS側はdocker
フォルダからの相対パスだから、/docker
じゃ無くて、/
にすればいいのか!
と思って以下のように設定しました。
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/xenial64"
config.vm.synced_folder "/","/vagrant"
end
↓
結果、ホストOS側の'/'以降の全てのフォルダ(Users
とかDesktop
とか全部)が同期されて訳わからんくなってましたw
そうか、絶対パスなんだ!
と、ここでようやく気づき、少し調べてcreate:"true"
が必要ということがわかり、上部の結論に書いた設定に至りました。
■もう一度結論
config.vm.synced_folder "/Users/katsuki_y/Develop/docker", "/home/ubuntu/vagrant",create:"true"
パスって難しいですね><
以上。