2015-08-27 2 views
0

Я пытаюсь построить контейнер докеров на лету в бродячем vm. Файлы Vagrantfile и Dockerfile, из которых должен быть создан контейнер, находятся в одном каталоге, а на виртуальной машине они находятся в стандартной синхронизированной папке/бродяге, как и ожидалось. К сожалению, создание контейнера не работает - я получаю The Dockerfile (Dockerfile) must be within the build context. Каков надлежащий контекст сборки в этом случае? Нужно ли мне когда-нибудь копировать файл Dockerfile, чтобы использовать его?Провиденциальная машина: Dockerfile (Dockerfile) должен находиться в контексте сборки

Vagrantfile:

Vagrant.configure("2") do |config| 
    config.vm.provider "virtualbox" 
    config.vm.box = "ubuntu/trusty64" 
    config.vm.hostname = "ubuntu" 

    config.vm.network :private_network, ip: "192.168.0.200" 
    config.ssh.forward_agent = true 
    config.ssh.insert_key = false 

    config.vm.provision "docker" do |d| 
     d.build_image "/vagrant/Dockerfile" 
     d.build_args = ['--tag "container"'] 
     d.run "container" 
    end 
end 

Выход:

$ vagrant provision 
==> default: Running provisioner: docker... 
==> default: Building Docker images... 
==> default: -- Path: /vagrant/Dockerfile 
==> default: stdin: is not a tty 
==> default: The Dockerfile (Dockerfile) must be within the build context (/vagrant/Dockerfile) 
The following SSH command responded with a non-zero exit status. 
Vagrant assumes that this means the command failed! 

docker build /vagrant/Dockerfile 

Stdout from the command: 



Stderr from the command: 

stdin: is not a tty 
The Dockerfile (Dockerfile) must be within the build context (/vagrant/Dockerfile) 
+1

Является 'd.build_image "/ vagrant/Dockerfile" 'действительный вариант? Вы пробовали «d.build_dir»/vagrant «'? – SteveChapman

+0

Необязательно, указывая 'd.dockerfile x', если файл docker не называется« Dockerfile » – SteveChapman

+0

build_dir и файл docker недопустимы, в соответствии с' VagrantPlugins :: DockerProvisioner :: Config: * Следующие параметры не должны существовать: build_dir' – nflacco

ответ

1

d.build_image "/vagrant/Dockerfile" вариант следует обратиться к содержащей папку Dockerfile, в данном случае:

Vagrant.configure("2") do |config| 
    config.vm.provider "virtualbox" 
    config.vm.box = "ubuntu/trusty64" 
    config.vm.hostname = "ubuntu" 

    config.vm.network :private_network, ip: "192.168.0.200" 
    config.ssh.forward_agent = true 
    config.ssh.insert_key = false 

    config.vm.provision "docker" do |d| 
     d.build_image "/vagrant" 
     d.build_args = ['--tag "container"'] 
     d.run "container" 
    end 
end 
Смежные вопросы