【问题标题】:Understanding vagrant with a docker provisioner使用 docker 供应商了解 vagrant
【发布时间】:2015-12-06 05:53:28
【问题描述】:

所以我的目标是让 Vagrant 为我创建一个可以用作 Rails Web 应用程序开发环境的 VM。我对 Vagrant、Docker 等非常非常陌生,想检查一下这是否有意义:

我应该创建一个还是两个 Docker 映像?我的想法是,一个图像将用于 rvm、ruby 和 rails,而另一个图像将用于 Apache。

目标是可以分发给几个人,然后他们可以轻松设置完全相同的环境。

这是我当前的 Vagrantfile:

VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
    config.vm.box = "phusion/ubuntu-12.04-amd64"
    config.vm.network "forwarded_port", :guest => 80, :host => 5000

    # Share the docker configs
    config.vm.synced_folder "./docker", "/docker"

    config.vm.provision "docker" do |d|
        d.build_image "-t me/rvm-dev /docker/rvm-dev"
        d.run "me/rvm-dev"

    end
    config.vm.host_name = "coursera-rail.dev"
    config.vm.network :forwarded_port, guest:80, host:8080  
end

这是我当前的(可能是错误的)Dockerfile (顺便说一句,我正在尝试找到一些关于创建“docker”用户帐户的良好指导,因此我不会以 root 身份运行所有内容)

## Dockerfile
FROM ubuntu:latest

RUN apt-get update
RUN apt-get upgrade -y

RUN apt-get install -y curl

RUN mkdir -p /tmp/downloads

## Install RVM, Ruby, Rails
RUN cd /tmp/downloads
RUN \curl -L https://get.rvm.io | bash -s stable --ruby --rails

最后,上述方法有效,如果我使用 vagrant ssh,我可以进入我的虚拟机,但显然如果不执行 docker run -i -t me/rvm-dev 并使用 docker 获取 shell,我将无法使用 RVM .这应该是工作流程吗?

【问题讨论】:

标签: vagrant docker vagrantfile


【解决方案1】:

以我的拙见,最好的流程是

1) 将您的应用程序和数据库堆栈分离到 vagrant box 中

2) 在主机(物理机)和您的数据库实例(mysql 等)上运行 docker,并在 vagrant box 内运行。

选项一是最好的,因为您在 Vagrant 内部对堆栈的两层(DB 和 APP)进行“沙盒化”,从而使本地计算机(Windows、Linux、Mac OSX)上的操作系统保持不变。当然,您可以在物理机上安装/运行 IDE。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-13
    • 1970-01-01
    • 1970-01-01
    • 2013-09-27
    • 1970-01-01
    • 2019-10-08
    相关资源
    最近更新 更多