vagrant:在Docker实例引导后在Virtualbox中运行shell脚本(排序错误)
我有以下设置与流浪汉vagrant:在Docker实例引导后在Virtualbox中运行shell脚本(排序错误),docker,vagrant,vagrantfile,Docker,Vagrant,Vagrantfile,我有以下设置与流浪汉 运行约塞米蒂的Mac笔记本电脑 在笔记本电脑内部,有一个用Virtualbox管理的Ubuntu trusty64实例 在Virtualbox Ubuntu实例内部,有两个Docker容器,其中一个运行Postgres,另一个运行Redis 我希望按以下顺序执行命令: 启动Virtualbox Ubuntu实例 引导Docker容器 启动Docker容器 在Ubuntu实例上运行命令 我需要最后运行该命令,因为我希望它与容器交互。这是我现在在我的Vagrant文件中的内
- 运行约塞米蒂的Mac笔记本电脑
- 在笔记本电脑内部,有一个用Virtualbox管理的Ubuntu trusty64实例
- 在Virtualbox Ubuntu实例内部,有两个Docker容器,其中一个运行Postgres,另一个运行Redis
forward\u port
细节,因为它们似乎与Vagrant运行供应器的顺序无关
Vagrant.configure("2") do |config|
config.vm.provider "docker" do |d|
d.vagrant_vagrantfile = "./docker-Vagrantfile"
end
config.vm.define "db" do |p|
p.vm.provider "docker" do |pd|
# ...
end
end
config.vm.define "redis" do |r|
r.vm.provider "docker" do |rd|
rd.name = "redis"
rd.image = "redis"
end
end
end
这是链接的docker Vagrant文件
:
Vagrant.configure("2") do |config|
config.vm.box = "trusty64"
config.vm.provision "docker"
config.vm.provision "shell", path: "./scripts/init_app.sh"
config.vm.provider "virtualbox" do |v|
# ...
end
end
无论我如何努力,我都无法在Docker容器开始运行后运行init_app.sh
我还读到Vagrant以“从外到内”的顺序执行供应器,所以我尝试了很多诡计,试图将的“shell”
提供程序嵌套在config.vm.define“foo”do | blah |……
调用中,但运气不佳
我相信在完成所有供应步骤之前,Docker容器可能不会启动?有一个叫做“供应后”的步骤。在这种情况下,我将永远无法在provisioner中运行脚本,并在Docker容器侦听其各自的端口后让其运行。您可以查看该脚本,因为它非常方便 尽管主页上没有对其进行记录,但可以使用
run\u remote
命令
config.trigger.after :up do
run_remote "bash ./scripts/init_app.sh"
end
您的脚本将在
vagrant up
运行后运行,因此docker容器应该准备就绪使用插件似乎是一个不错的选择,但在这种情况下,插件有一个构建错误。我不知道使用它是否是个好主意=0)奇怪也许您应该打开此项目的票证或详细说明错误原因,因为它应该可以工作