Я пытаюсь запустить проект Rails, используя Nginx с докером и бродягой. Все в порядке, если я использую vagrant box ubuntu/trusty64, я подготавливаю виртуальную машину, и все в порядке. Но я хотел создать свою коробку из ubuntu/trusty64 и тут-то и начались все мои проблемы.
Поэтому я создал коробку с помощью упаковщика и этого шаблона:
{
"variables": {
"home": "{{env `HOME`}}"
},
"provisioners": [
{
"type": "shell",
"execute_command": "echo 'vagrant'|sudo -S sh '{{.Path}}'",
"override": {
"virtualbox-ovf": {
"scripts": [
"scripts/docker.sh",
"scripts/ansible.sh",
"scripts/cleanup.sh",
"scripts/zerodisk.sh"
]
}
}
}
],
"post-processors": [
{
"type": "vagrant",
"override": {
"virtualbox": {
"output": "ubuntu-14-04-x64-virtualbox.box"
}
}
}
],
"builders": [
{
"type": "virtualbox-ovf",
"headless": "true",
"boot_wait": "10s",
"source_path": "{{user `home`}}/.vagrant.d/boxes/ubuntu-VAGRANTSLASH-trusty64/14.04/virtualbox/box.ovf",
"ssh_username": "vagrant",
"ssh_password": "vagrant",
"ssh_port": 22,
"ssh_wait_timeout": "10000s",
"shutdown_command": "echo 'shutdown -P now' > /tmp/shutdown.sh; echo 'vagrant'|sudo -S sh '/tmp/shutdown.sh'",
"vboxmanage": [
[ "modifyvm", "{{.Name}}", "--memory", "512" ],
[ "modifyvm", "{{.Name}}", "--cpus", "1" ]
]
}
]
}
Затем добавил ящик в pedrof/base-box в бродячих ящиках и использовал этот Vagrantfile для запуска виртуальной машины:
Vagrant.configure(2) do |config|
config.vm.provider 'virtualbox' do |v|
v.memory = 2048
v.cpus = 2
end
config.vm.box = 'pedrof/base-box'
config.vm.synced_folder '.', '/vagrant', type: 'nfs', mount_options: ['nolock,vers=3,udp,noatime,actimeo=1']
config.vm.network :private_network, ip: '172.17.8.100'
config.vm.provision 'shell', path: "docker/build.sh"
config.vm.provision 'shell', path: "docker/init.sh", run: 'always'
end
Он запускает виртуальную машину и запускает контейнеры Docker с помощью docker-compose. Все в порядке, за исключением того, что я не могу получить доступ к http://172.17.8.100 из браузера, но ping отвечает нормально из хозяин. Я запустил curl, чтобы поразить Nginx изнутри виртуальной машины, и он ответил правильной индексной страницей, но ничего извне виртуальной машины. Странно то, что все работает нормально, если я перезагружаю vagrant с помощью vagrant reload
.
Я неправильно строю коробку? Чего-то не хватает в Vagrantfile?