我使用Docker配置器来进行Vagrant。他们在docs中说:
除了提取图像,Docker配置器还可以运行和 为你启动容器。这使您可以自动启动服务 作为流浪者的一部分。
这是我的Vagrantfile的一部分:
config.vm.provision "docker" do |d|
d.run "jwilder/nginx-proxy",
args: "-v /var/run/docker.sock:/tmp/docker.sock:ro -v /vagrant/certs:/etc/nginx/certs -p 80:80 -p 443:443"
d.run "redis",
args: "-v /vagrant/data:/data"
...
end
但是在vagrant halt
然后vagrant up
之后我的容器停了。
$vagrant@vagrant-ubuntu-trusty-64:~$ docker ps -a
CONTAINER ID .. STATUS .. NAMES
6bb965d1a7b9 Exited (137) 2 days ago redis
7f45214f6f06 Exited (2) 2 days ago jwilder-nginx-proxy
答案 0 :(得分:1)
好吧,我没有找到Vagrant在启动时没有启动容器的原因,但解决方法是使用Docker的restart policies。所以,我更新了我的Vagrantfile,删除了所有容器,并使用新的重启策略@Configuration
public class OAuth2Statefull {
@Bean
@Primary
public Boolean oauth2StatelessSecurityContext() {
return Boolean.FALSE;
}
}
再次运行容器:
vagrant provision
- restart = always
无论退出状态如何,始终重启容器。当你 指定始终,Docker守护程序将尝试重新启动容器 下去。
现在config.vm.provision "docker" do |d|
d.run "jwilder/nginx-proxy",
args: "--restart=always -v /var/run/docker.sock:/tmp/docker.sock:ro -v /vagrant/certs:/etc/nginx/certs -p 80:80 -p 443:443"
d.run "redis",
args: "--restart=always -v /vagrant/data:/data"
...
end
然后启动vagrant halt
个容器。