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

Bas*_*ian 15 vagrant docker

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

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

Lei*_*och 42

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

  1. 安装插件: vagrant plugin install vagrant-docker-compose
  2. 将以下行添加到您的Vagrantfile.

    config.vm.provision :docker
    config.vm.provision :docker_compose, yml: "/vagrant/docker-compose.yml", rebuild: true, run: "always"
    
    Run Code Online (Sandbox Code Playgroud)

有关完整示例,请参阅https://github.com/leighmcculloch/vagrant-docker-compose

  • 它是2018年7月,这仍然是一个有效的修复. (2认同)
  • 请注意,此插件自2017年3月起未维护.它仍然有效,但默认情况下会加载旧版本的Docker Compose.这意味着您无法使用它来使用最近的Docker Compose文件.要解决这个问题,你必须指定`config.vm.provision:docker_compose,yml:"some.yml",compose_version:"1.22.0"`,其中1.22.0是Docker Compose的最新版本,截至撰写此评论时. (2认同)
  • 对于那些不熟悉 vagrant 的人,请注意 `docker-compose.yml` 文件 (`/vagrant/docker-compose.yml`) 的路径值正如 @leigh-mculloch 所说,并且 `Vagrantfile`需要与 docker-compose 文件位于同一目录中,但如果您采取额外的步骤来操作路径,则可能可以避免这种情况。 (2认同)

Pad*_*dge 10

看来,就流浪者1.7.2而言,没有通过Docker Provisioner直接支持进行这种类型的操作.提供商也没有提及它.Vagrant docs:Docker配置,Vagrant docs:Docker命令

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

我发现使用Docker和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
    
    Run Code Online (Sandbox Code Playgroud)