プロビジョニング スクリプトの実行後に vagrant でフォルダーを同期させることはできますか?
ゲスト フォルダをホスト フォルダと同期する必要がありますが、プロビジョニング スクリプトが機能するにはホスト フォルダが空である必要があります。ユーザーとグループも存在する必要があります。プロビジョニング スクリプトが実行されるまでは、どれも存在できません。私のプロビジョニング スクリプトはユーザーとグループを作成します。
同期されたフォルダーは Magento テーマです。 Magento は空でないディレクトリにはインストールされないため、ディレクトリを同期するにはまず Magento をインストールする必要があります。
これが私の Vagrantfile です
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
config.vm.box = "bento/ubuntu-18.04"
config.vm.network "private_network", ip: "192.168.33.10"
config.vm.provision "shell", path: "provision.sh"
config.vm.synced_folder ".", "/vagrant", disabled: true
config.vm.synced_folder "app/design/frontend",
"/var/www/mage/app/design/frontend",
create: false,
owner: "mage",
group: "www-data"
config.vm.provider "virtualbox" do |vb|
vb.memory = "3000"
end
end
トリガーについて見てきましたが、トリガー内で config.vm.synced_folder を使用する方法はわかりました。
何かアドバイスはありますか?
------------------------
解決策を見つけました。
Vagrantfile で、次のように config.vm.synced_folder を false に設定します (nfs でも機能します)。
config.vm.synced_folder "app/design/frontend",
"/var/www/mage/app/design/frontend",
type: "rsync",
disabled: false,
owner: "mage",
group: "www-data"
次に、vagrant up を実行します。サーバーのプロビジョニングが完了したら、次のように disabled を true に変更します。
config.vm.synced_folder "app/design/frontend",
"/var/www/mage/app/design/frontend",
type: "rsync",
disabled: true,
owner: "mage",
group: "www-data"
ここで vagrant reload を実行すると、フォルダーが同期されます。
ドキュメントにはこう書かれています
disabled (ブール値) - true の場合、この同期フォルダーは無効になり、
セットアップされません。これを使用して、以前に定義した機能を無効にすることができます。
同期されたフォルダーを削除するか、いくつかの基準に基づいて定義を条件付きで無効にします
外部要因。
そのため、これが私の問題を解決するための意図された方法の 1 つである可能性があると確信しました。
ただし書き後にフォルダーをマウントする機能リクエストがあります。これは閉じられて解決されていないようですので、他に方法はないと思います: https://github.com/bashicorp/vagrant/issues/936