Как я могу предоставить Dockerfile от Vagrant
Как я могу запустить настройку Docker через внешний файл Docker?
Мой Vagrantfile выглядит так на данный момент
Vagrant.configure("2") do |config|
config.vm.box = "precise64"
config.vm.define :server_infrastructure do |t|
end
config.vm.provision "docker" do |d|
d.pull_images "ubuntu"
#how does the below work?
#d.build "new-container-name" "local-docker-file-name"
end
end
Ваша помощь с благодарностью
Ответы
Ответ 1
В v1.6.0 добавлена опция для создателя изображений Docker для создания изображений. Загрузите последнюю версию с сайта бродяг.
Как только вы это сделаете, поместите файл Docker рядом с вашим Vagrantfile. Добавьте это в свой Vagrantfile:
config.vm.provision "docker" do |d|
d.build_image "/vagrant", args: "-t my-name/my-new-image"
d.run "my-name/my-new-image"
end
Теперь ваше изображение Docker будет построено и запущено с vagrant up
.
Ответ 2
одно обходное решение - через предоставление оболочки:
config.vm.provision "shell", inline: "docker build -t username/image /vagrant; docker run -d username/image"
Ответ 3
Чтобы docker мог создать образ из файла docker, соответствующий файл dockerfile должен быть представлен на гостевой машине и способ обеспечить использование функции общих папок для бродяг.
По умолчанию vagrant монтирует корневую папку проекта в новый vm под именем/бродягой. Но в вашем случае я предлагаю вам поделиться другой папкой и поставить там свои док файлы. Также, поделившись другой папкой, вы можете убедиться, что ваши файлы докеров видны только для чтения гостевой машиной.
Теперь предположим, что вы создаете новую папку в корневой директории проектов с именем "докер" и помещаете в нее свои док файлы. Теперь, если вы установите эту папку на гостевую машину и запустите докер, чтобы использовать этот файл, вы все настроены. если вы добавите эти строки в ваш бродячий файл, он будет работать, как ожидалось.
config.vm.synced_folder "docker/", "/docker_builds", create: true, mount_options: ["ro"]
config.vm.provision "docker" do |d|
d.build_image "/docker_builds", args: "-t my-name/my-new-image"
d.run "my-name/my-new-image"
end