我可以使用Docker Compose直接配置Vagrant吗?

时间:2015-03-26 10:26:58

标签: docker vagrant

我有一个Vagrant文​​件,它只显示一个基本的Ubuntu服务器,然后依赖shell脚本来进行配置。这个shell脚本只是安装Docker和Docker Compose来设置我拥有的各种容器。

使用shell脚本执行此操作是否有意义?或者有没有办法告诉Vagrant直接使用Docker Compose进行配置?我不知道与Vagrant中现有的Docker配置器有多么不同。

2 个答案:

答案 0 :(得分:37)

我最近提出了同样的问题,我创建了一个vagrant配置器插件,用于安装docker-compose并使用它来启动docker。使用它:

  1. 安装插件:vagrant plugin install vagrant-docker-compose
  2. 将以下行添加到您的Vagrant文​​件中。

    config.vm.provision :docker
    config.vm.provision :docker_compose, yml: "/vagrant/docker-compose.yml", rebuild: true, run: "always"
    
  3. 有关完整示例,请参阅https://github.com/leighmcculloch/vagrant-docker-compose

答案 1 :(得分:10)

从流浪者1.7.2开始,似乎没有通过Docker Provisioner直接支持进行此类操作。提供商也没有提及它。 Vagrant docs: Docker provisioningVagrant docs: Docker commands

我的猜测是这个版本的Vagrant维护者感觉Vagrantfile与Docker提供程序一起使用时会提供类似的行为。这可以解释为什么在用Docker Compose替换之前他们没有冒险添加对Fig的直接支持。

我发现使用Docker with Vagrant要求您找到使用您认为最适合自己的每种工具的正确组合。 例如,您可能会发现使用Dockerfiles和Docker命令(如docker compose)比尝试将该逻辑实现到Vagrantfile更直观。或者,您可以尝试混合Dockerfiles并使用Vagrant引用Dockerfiles,它使用正常的Vagrantfile为您提供Dockerfile中的Docker逻辑和构建“orchestration”。

这可能是这样的:

  1. 使用非常简单的Vagrant Docker提供程序配置,依赖Dockerfile来完成其他任务

    使用d.build_dir = "."引用Dockerfile

  2. 在Vagrant中使用Docker配置程序启动所有内容

    vagrant up --provision-with docker