stream浪者:使用提供者和提供togather

这是我的主要stream浪文件

Vagrant.configure(2) do |config| config.vm.define "app7" do |app7| app7.vm.synced_folder "/home/behrad/dunro","/var/www/html" app7.vm.network "forwarded_port", id: "ssh", guest: 22, host: 2222, auto_correct: true app7.vm.provider "docker" do |docker| docker.vagrant_vagrantfile = "dev/app7/Vagrantfile" docker.build_dir = "./dev/app7" docker.build_args = "-t","dunro/app7:20170701" docker.name = "app7" docker.ports = ['80:80'] docker.has_ssh = true end end end 

和dev / app7 / Vagrantfile

 Vagrant.configure(2) do |config| config.vm.hostname = "app7" config.vm.provision "file", source: "keys/id_rsa.pub", destination: "/var/www/.ssh/authorized_keys" config.ssh.username = "www-data" config.ssh.private_key_path = "keys/id_rsa" end 

dev / app7 / Vagrantfile不起作用

dev / app7 / Vagrantfile不起作用

是的,它不工作,因为它不是一个有效的Vagrantfile。

你基本上已经指示vagrant使用主VM,所以从主Vagrantfile,你告诉vagrant去查看另一个Vagrantfile来了解主机VM(运行docker的主VM)的configuration,所以至less你需要一个config.vm.box设置将成为此VM的基础框

主机VM Vagrantfile的一个例子是

 # -*- mode: ruby -*- # vi: set ft=ruby : Vagrant.configure(2) do |config| config.vm.box = "ubuntu/trusty64" config.vm.hostname = "app7" config.vm.provision "shell", inline: "echo Hello, World" # make sure to have docker installed on this VM config.vm.provision "docker" config.vm.network :forwarded_port, guest: 80, host: 4567 end 

这将创build一个基于Ubuntu的trusty64的虚拟机(我确保安装最新版本的docker,所以docker提供者的主Vagrantfile将能够正常运行)

在这种情况下,我可以看到我的内联shellconfiguration正在运行,docker规定将安装docker,然后docker主提供程序将在此VM上提取映像