私の目標は、DockerまたはVirtualBoxのどちらかを--providerフラグ(例:vagrant up --provider = virtualbox)を使って選択できる1つのVagrantfileを作成することです。 Dockerプロバイダが私のボックスに互換性がないと言っているので、私は問題に遭遇しています。これは本当ですが、私はDockerにこのボックスを使用させたくありません。 Dockerが使用するために指しているDockerfileがあります。 VirtualBoxがプロバイダの場合にのみボックスを使用したいと思っています。 Dockerプロバイダにボックス宣言を無視させる方法、またはVirtualBoxがプロバイダである場合にのみボックス宣言を実行させる方法はありますか?それぞれ異なるボックスを使用する複数のプロバイダに対して、どのようにバグログファイルを作成しますか?
これは私のVagrantfileです:
Vagrant.require_version ">= 1.7.0"
Vagrant.configure('2') do |config|
PROJECT_ROOT = File.expand_path(File.join(File.dirname(File.expand_path(__FILE__)), '..'))
config.vm.provider "docker" do |d|
d.build_dir = "."
d.has_ssh = true
end
config.vm.box = "ubuntu/trusty64" # <--------- this is the line the Docker provider chokes on
config.vm.provider "virtualbox" do |v|
v.gui = true
end
config.vm.network :forwarded_port, guest: 80, host: 9002
config.vm.network :forwarded_port, guest: 9000, host: 9000
config.vm.network :forwarded_port, guest: 9001, host: 9001
config.vm.synced_folder PROJECT_ROOT, '/srv'
config.vm.provision :ansible do |ansible|
ansible.verbose = "v"
ansible.playbook = 'provisioning/playbook.yml'
end
end
てみましたか?それは動作しません。 'config.vm.provider'は条件文ではありません。ファイルが解析されると 'config.vm.provider'へのすべての呼び出しが行われます。 – hekevintran
@hekevintran、更新された答えを確認してください –
ああ良い見つける、オーバーライドは答えです!ありがとう! – hekevintran